java类和对象程序_Java类和对象编程示例

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

1、定义一个Circle圆类。

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

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

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

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

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

classCircle {private double radius=1;publicCircle() {

}public Circle(doubleradius) {this.radius =radius;

}public void setRadius(doubleradius) {this.radius =radius;

}public doublegetRadius() {returnradius;

}public doublegetArea() {return Math.PI*radius*radius;

}public doublegetPerimeter() {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()的方法返回周长。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

classRectangle {private double width=1.0;private double height=1.0;publicRectangle() {

}public Rectangle(double width,doubleheight) {this.width =width;this.height =height;

}public void setWidth(doublewidth) {this.width =width;

}public double getWidth(doublewidth) {returnwidth;

}public void setHeight(doubleheight) {this.height =height;

}public double getHeight(doubleHeight) {returnheight;

}public doublegetArea() {return width*height;

}public doublegetPerimeter() {return 2*(width+height);

}

}

Rectangle类代码

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classTest{public static voidmain(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()方法,比较两个几何对象的面积是否相等。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.util.Date;classGeometricObject {private String color = "white";private boolean filled =false;privateDate dateCreated;publicGeometricObject() {

dateCreated= newDate();

}public GeometricObject(String color, booleanfilled) {this.color =color;this.filled =filled;

dateCreated= newDate();

}publicString getColor() {returncolor;

}public voidsetColor(String color) {this.color =color;

}public booleanisFilled() {returnfilled;

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

}publicDate getDateCreated() {returndateCreated;

}public double getArea() {return 1;}public booleanequalArea(GeometricObject o) {return (getArea()==o.getArea());

}

}

GeometricObject类的定义

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

class Circle extendsGeometricObject{private double radius=1;publicCircle() {

}public Circle(doubleradius) {this.radius =radius;

}public void setRadius(doubleradius) {this.radius =radius;

}public doublegetRadius() {returnradius;

}public doublegetArea() {return Math.PI*radius*radius;

}public doublegetPerimeter() {return Math.PI*radius*2;

}

@OverridepublicString toString() {return "This is a Circle created at +"+super.getDateCreated()+"\nradius = "+radius+", area = "+getArea();

}

}class Rectangle extendsGeometricObject{private double width=1.0;private double height=1.0;publicRectangle() {

}public Rectangle(double width,doubleheight) {this.width =width;this.height =height;

}public void setWidth(doublewidth) {this.width =width;

}public double getWidth(doublewidth) {returnwidth;

}public void setHeight(doubleheight) {this.height =height;

}public double getHeight(doubleHeight) {returnheight;

}public doublegetArea() {return width*height;

}public doublegetPerimeter() {return 2*(width+height);

}

@OverridepublicString 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()方法分别输出两个对象的描述,并比较这两个对象的面积是否相等。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classTest{public static voidmain(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()方法。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.util.Date;abstract classGeometricObject {private String color = "white";private boolean filled =false;privateDate dateCreated;publicGeometricObject() {

dateCreated= newDate();

}public GeometricObject(String color, booleanfilled) {this.color =color;this.filled =filled;

dateCreated= newDate();

}publicString getColor() {returncolor;

}public voidsetColor(String color) {this.color =color;

}public booleanisFilled() {returnfilled;

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

}publicDate getDateCreated() {returndateCreated;

}public abstract doublegetArea();public abstract doublegetPerimeter();public booleanequalArea(GeometricObject o) {return (getArea()==o.getArea());

}

}

GeometricObject抽象类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

class Circle extendsGeometricObject{private double radius=1;publicCircle() {

}public Circle(doubleradius) {this.radius =radius;

}public void setRadius(doubleradius) {this.radius =radius;

}public doublegetRadius() {returnradius;

}

@Overridepublic doublegetArea() {return Math.PI*radius*radius;

}

@Overridepublic doublegetPerimeter() {return Math.PI*radius*2;

}

@OverridepublicString toString() {return "This is a Circle created at +"+super.getDateCreated()+"\nradius = "+radius+", area = "+getArea();

}

}

覆盖抽象方法的Circle类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

class Rectangle extendsGeometricObject{private double width=1.0;private double height=1.0;publicRectangle() {

}public Rectangle(double width,doubleheight) {this.width =width;this.height =height;

}public void setWidth(doublewidth) {this.width =width;

}public double getWidth(doublewidth) {returnwidth;

}public void setHeight(doubleheight) {this.height =height;

}public double getHeight(doubleHeight) {returnheight;

}

@Overridepublic doublegetArea() {return width*height;

}

@Overridepublic doublegetPerimeter() {return 2*(width+height);

}

@OverridepublicString toString() {return "This is a rectangle created at +"+super.getDateCreated()+"\nwidth = "+width+", height = "+height+", area = "+getArea();

}

}

覆盖抽象方法的Rectangle类

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public interfaceGeometricInterface {doublegetArea();doublegetPerimeter();

}

GeometricInterface接口类

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.util.Date;abstract class GeometricObject implements GeometricInterface,Comparable{private String color = "white";private boolean filled =false;privateDate dateCreated;publicGeometricObject() {

dateCreated= newDate();

}public GeometricObject(String color, booleanfilled) {this.color =color;this.filled =filled;

dateCreated= newDate();

}publicString getColor() {returncolor;

}public voidsetColor(String color) {this.color =color;

}public booleanisFilled() {returnfilled;

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

}publicDate getDateCreated() {returndateCreated;

}

@Overridepublic intcompareTo(GeometricObject g) {if (getArea()>g.getArea()) return 1;else if (getArea()

}

}

实现接口的GeometricObject类

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classTest{public static voidmain(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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,创建类和对象Java编程的基础。下面是创建类和对象的步骤和示例代码: 1. 创建Java中,使用关键字“class”来创建名应该以大写字母开头,且应该与文件名相同。中包含属性和方法。 示例代码: ```java public class Person { // 属性 String name; int age; // 方法 public void sayHello() { System.out.println("Hello, my name is " + name + ", I'm " + age + " years old."); } } ``` 2. 创建对象 在Java中,使用关键字“new”来创建对象。创建对象时,需要指定名和构造函数(如果有的话)。 示例代码: ```java Person person = new Person(); person.name = "Tom"; person.age = 18; person.sayHello(); ``` 3. 构造函数 构造函数是一种特殊的方法,用于初始化对象。在Java中,如果没有定义构造函数,则会使用默认的无参构造函数。如果定义了构造函数,则需要使用关键字“this”来引用当前对象。 示例代码: ```java public class Person { // 属性 String name; int age; // 无参构造函数 public Person() { name = "Unknown"; age = 0; } // 有参构造函数 public Person(String name, int age) { this.name = name; this.age = age; } // 方法 public void sayHello() { System.out.println("Hello, my name is " + name + ", I'm " + age + " years old."); } } ``` 示例代码: ```java Person person1 = new Person(); person1.sayHello(); // 输出:Hello, my name is Unknown, I'm 0 years old. Person person2 = new Person("Tom", 18); person2.sayHello(); // 输出:Hello, my name is Tom, I'm 18 years old. ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值