Java类和对象编程示例

一、Java类的定义和对象的创建

1、定义一个Circle圆类。

(1)一个名为radius的double型数据域,表示圆的半径,其默认值为1。

(2)创建默认圆的无参构造方法。

(3)一个创建radius为指定值的圆的构造方法。

(4)数据域radius的访问器和修改器。

(5)一个名为getArea()的方法返回这个圆的面积。

(6)一个名为getPerimeter()的方法返回周长。

class Circle {
    private double radius=1;
    public Circle() {
    }
    public Circle(double radius) {
        this.radius = radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getRadius() {
        return radius;
    }
    public double getArea() {
        return Math.PI*radius*radius;
    }
    public double getPerimeter() {
        return Math.PI*radius*2;
    }
}

Circle类代码

2、定义一个Rectangle矩形类

(1)两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1。

(2)创建默认矩形的无参构造方法。

(3)一个创建width和height为指定值的矩形的构造方法。

(4)数据域width和height的访问器和修改器。

(4)一个名为getArea()的方法返回这个矩形的面积。

(5)一个名为getPerimeter()的方法返回周长。

class Rectangle {
    private double width=1.0;
    private double height=1.0;
    public Rectangle() {
    }
    public Rectangle(double width,double height) {
        this.width = width;
        this.height = height;
    }
    public void setWidth(double width) {
        this.width = width;
    }
    public double getWidth(double width) {
        return width;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getHeight(double Height) {
        return height;
    }
    public double getArea() {
        return width*height;
    }
    public double getPerimeter() {
        return 2*(width+height);
    }
}

Rectangle类代码

3、创建一个半径为10的Circle,输出其面积和圆周长;创建一个长为4,宽为6的Rectangle,输出其面积和周长。

public class Test{
    public static void main(String[] args) {
        Circle circle = new Circle(10);
        System.out.printf("The area of Circle  is %.2f, The perimeter of Circle is %.2f\n",circle.getArea(),circle.getPerimeter());
        Rectangle rectangle = new Rectangle(4,6);
        System.out.printf("The area of Rectangle  is %.2f, The perimeter of Circle is %.2f\n",rectangle.getArea(),rectangle.getPerimeter());

    }
}

测试代码

运行结果:

The area of Circle is 314.16, The perimeter of Circle is 62.83
The area of Rectangle is 24.00, The perimeter of Circle is 20.00

二、Java类的继承和多态

1、定义一个GeometricObject类。

(1)一个名为color的String型数据域,表示几何对象的颜色,默认值为white。一个名为filled的boolean型数据,表示是否着色。一个名为dateCreated的Date型数据域,表示几何对象创建时间。

(2)创建默认几何对象的无参构造方法。

(3)一个创建带特定颜色和填充值的构造方法。

(4)数据域color和filled的访问器和修改器。dateCreated的访问器。

(5)增加一个equalArea()方法,比较两个几何对象的面积是否相等。

import java.util.Date;
class GeometricObject {
    private String color = "white";
    private boolean filled =false;
    private Date dateCreated;

    public GeometricObject() {
        dateCreated = new Date();
    }

    public GeometricObject(String color, boolean filled) {
        this.color = color;
        this.filled = filled;
        dateCreated = new Date();
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isFilled() {
        return filled;
    }

    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    public Date getDateCreated() {
        return dateCreated;
    }
    public double getArea() {return 1;}
    public boolean equalArea(GeometricObject o) {
        return  (getArea()==o.getArea());
    }
}

GeometricObject类的定义

2、改写Circle类和Rectangl类继承GeometricObject类,并分别重写toString()方法返回这个对象的字符串描述。

class Circle extends GeometricObject{
    private double radius=1;
    public Circle() {
    }
    public Circle(double radius) {
        this.radius = radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getRadius() {
        return radius;
    }
    public double getArea() {
        return Math.PI*radius*radius;
    }
    public double getPerimeter() {
        return Math.PI*radius*2;
    }
    @Override
    public String toString() {
        return "This is a Circle created at +"+super.getDateCreated()+"\nradius = "+radius+", area = "+getArea();
    }
}

class Rectangle extends GeometricObject{
    private double width=1.0;
    private double height=1.0;
    public Rectangle() {
    }
    public Rectangle(double width,double height) {
        this.width = width;
        this.height = height;
    }
    public void setWidth(double width) {
        this.width = width;
    }
    public double getWidth(double width) {
        return width;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getHeight(double Height) {
        return height;
    }
    public double getArea() {
        return width*height;
    }
    public double getPerimeter() {
        return 2*(width+height);
    }
    @Override
    public String toString() {
        return "This is a rectangle created at +"+super.getDateCreated()+"\nwidth = "+width+", height = "+height+", area = "+getArea();
    }
}

Circle类和Rectangle类

3、创建一个半径为10的Circle,创建一个长为4,宽为6的Rectangle,调用toString()方法分别输出两个对象的描述,并比较这两个对象的面积是否相等。

public class Test{
    public static void main(String[] args) {
        GeometricObject circle = new Circle(10);
        GeometricObject rectangle = new Rectangle(4,6);
        System.out.println(circle.toString());
        System.out.println(rectangle.toString());
        System.out.println("the area equal? : "+circle.equalArea(rectangle));
    }
}

测试代码

运行结果:

This is a Circle created at +Wed Oct 24 15:20:39 CST 2018
radius = 10.0, area = 314.1592653589793
This is a rectangle created at +Wed Oct 24 15:20:39 CST 2018
width = 4.0, height = 6.0, area = 24.0
the area equal? : false

三、Java类的抽象和接口

1、改写GeometricObject类为抽象类。

(1)定义一个抽象方法getArea()方法。

(2)定义一个抽象方法getPerimeter()方法。

import java.util.Date;
abstract class GeometricObject {
    private String color = "white";
    private boolean filled =false;
    private Date dateCreated;

    public GeometricObject() {
        dateCreated = new Date();
    }

    public GeometricObject(String color, boolean filled) {
        this.color = color;
        this.filled = filled;
        dateCreated = new Date();
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isFilled() {
        return filled;
    }

    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    public Date getDateCreated() {
        return dateCreated;
    }

    public abstract double getArea();
    public abstract double getPerimeter();

    public boolean equalArea(GeometricObject o) {
        return  (getArea()==o.getArea());
    }
}

GeometricObject抽象类

class Circle extends GeometricObject{
    private double radius=1;
    public Circle() {
    }
    public Circle(double radius) {
        this.radius = radius;
    }
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getRadius() {
        return radius;
    }
     @Override
    public double getArea() {
        return Math.PI*radius*radius;
    }
     @Override
    public double getPerimeter() {
        return Math.PI*radius*2;
    }
    @Override
    public String toString() {
        return "This is a Circle created at +"+super.getDateCreated()+"\nradius = "+radius+", area = "+getArea();
    }
}

覆盖抽象方法的Circle类

class Rectangle extends GeometricObject{
    private double width=1.0;
    private double height=1.0;
    public Rectangle() {
    }
    public Rectangle(double width,double height) {
        this.width = width;
        this.height = height;
    }
    public void setWidth(double width) {
        this.width = width;
    }
    public double getWidth(double width) {
        return width;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public double getHeight(double Height) {
        return height;
    }
    @Override
    public double getArea() {
        return width*height;
    }
    @Override
    public double getPerimeter() {
        return 2*(width+height);
    }
    @Override
    public String toString() {
        return "This is a rectangle created at +"+super.getDateCreated()+"\nwidth = "+width+", height = "+height+", area = "+getArea();
    }
}

覆盖抽象方法的Rectangle类

2、设计一个GeometricInterface接口,其中包含getArea()方法和getPerimeter()方法。

public interface GeometricInterface {
    double getArea();
    double getPerimeter();

}

GeometricInterface接口类

3、改写GeometricObject类,实现GeometricInterface接口和Compareble接口。

import java.util.Date;
abstract class GeometricObject implements GeometricInterface,Comparable<GeometricObject>{

    private String color = "white";
    private boolean filled =false;
    private Date dateCreated;

    public GeometricObject() {
        dateCreated = new Date();
    }

    public GeometricObject(String color, boolean filled) {
        this.color = color;
        this.filled = filled;
        dateCreated = new Date();
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isFilled() {
        return filled;
    }

    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    public Date getDateCreated() {
        return dateCreated;
    }
 @Override
    public int compareTo(GeometricObject g) {
        if (getArea()>g.getArea()) return 1;
        else if (getArea()<g.getArea()) return -1;
        else return 0;
    }
}

实现接口的Geo类metricObject

4、分别创建一个半径为10的圆c1、半径为1的圆c2,半径为0.5的圆C3,创建一个长为1,宽为Math.PI的矩形r,输出c1和r,c2和r,c3和r的面积比较结果。

public class Test{
    public static void main(String[] args) {
        GeometricObject c1 = new Circle(10);
        GeometricObject c2 = new Circle(1);
        GeometricObject c3 = new Circle(0.5);
        GeometricObject r = new Rectangle(1,Math.PI);

        System.out.println("c1:r  is "+c1.compareTo(r));
        System.out.println("c2:r  is "+c2.compareTo(r));
        System.out.println("c3:r  is "+c3.compareTo(r));
    }
}

测试代码

运行结果:

c1:r is 1
c2:r is 0
c3:r is -1

原文地址:https://www.cnblogs.com/yinweifeng/p/9843812.html

时间: 2024-10-10 15:51:09

Java类和对象编程示例的相关文章

Java类与对象的课后练习

Java类与对象的课后练习编程题(java2实用教程P111) 这章内容自学完了,在做教材课后其他练习题的时候(只要自己仔细)都没啥问题,但在做最后一道上机编程题的时候问题出现了,在阅读题目的时候自己能感受到的是这道题不难(的确也不难),我也很快写了出来,但运行程序的时候,结果一直不正确,最后改来改去都不对,思路是对的,分步执行的时候也感觉是有个地方出了问题但就是揪不出来,最后又把课本的前面的例子反复的看对比,最后找到了问题: System.out.println("cpu的速度:"+

java类与对象的区别

java类与对象的区别是个老生常谈的问题,刚开始学java的时候就开始接触类和对象,今天来总结一下他们之间的区别. 首先讲讲class和object的区别,其实就是一句话:object是所有class的父类,所有class类都默认继承object. java中类是对一类"事物"的属性和行为一种抽象,比如人类就可以定义为一个Person类: public class Person { public int age;//年龄 public String name;//姓名 public i

java类,对象,方法

1,类和对象   在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体.类的数据称为成员变量,类对数据的操作称为成员方法.成员变量反映类的状态和特征,成员方法反映类的行为和能力.类的成员变量和方法统称为类的成员.   对象(Object)是类的实例(instance).对象是动态的,拥有生命周期,都会经历一个从创建.运行到消亡的过程.对象与类的关系就像变量与数据类型一样.   类声明 { 修饰符 } class <Classname> { extends <

OpenCV SVM多类分类问题编程示例

2014年4月,北京--TechExcel喜签网目信息技术(上海)有限公司(以下简称"网目信息"),采用TechExcel公司CustomerWise产品助力其建立全球用户统一门户,统一各分公司的服务标准和服务流程,为用户提供全球标准化的服务. ICONZ-Webvisions公司(网目信息)总部设在新加坡,拥有20多年的IT运维及外包服务经验历史,是唯一以亚洲为中心,为亚洲.澳大利亚和全球市场提供"云"和托管服务的供应商.ICONZ-Webvisions可以利用其

有关java类、对象初始化的话题,从一道面试题切入

最近在整理东西时,刚好碰到以前看的一道有关java类.对象初始化相关题目,觉得答案并不是非常好(记忆点比较差,不是很连贯).加上刚好复习完类加载全过程的五个阶段(加载-验证-准备-解析-初始化),所以如果周志明大大诚不我欺的话,无论是类加载过程.还是实例化过程的顺序我都已经了然于心了才对. 一道面试题 标题:2015携程JAVA工程师笔试题(基础却又没多少人做对的面向对象面试题) 地址:https://zhuanlan.zhihu.com/p/25746159 该题代码如下: public cl

Java类与对象的基础学习

1. 请输入并运行以下代码,得到什么结果? public class Test{ public static void main(String args[]){ Foo obj1=new Foo(); Foo obj2=new Foo(); System.out.println(obj1==obj2); } } class Foo {int value=100;} 结果截图: 原因:当“==”施加于原始数据类型变量时,是比较变量所保存的数据是否相等:当“==”施加于引用类型变量时,是比较这两个变

Java类和对象动手动脑

动手动脑1 以下代码为何无法通过编译?哪儿出错了? 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 动手动脑2 进行试验 使用上页幻灯片中定义的类,以下代码输出结果是什么? public class Test { public static void main(String[] args) { InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field);//? obj=n

JAVA类与对象(一)

面向对象基本概念 面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范,其基本思想是使用对象.类.继承.封装.消息等基本概念来进行程序设计.它是从现实世界客观存在的事物(即对象)出发来构造软件系统的,并且在系统构造中尽可能运用人类的自然思维方式. 对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位.对象由属性和对属性进行操作的一组服务组成. 类:把众多是事物归纳.划分成一些是人类在认识客观世界时经常采用的思维方式.分类的原则是抽象的.类是具有相同属性和服务的一组对

解析Java类和对象的初始化过程

类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见. 本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后,对 JVM 执行过程的关键点进行全面解析,并在文中穿插入了相关 JVM 规范和 JVM 的部分内部理论知识,以理论与实际结合的方式介绍对象初始化和类初始化之间的协作以及可能存在的