JAVA中的几何图形类与派生类的设计
几何图形是数学中的重要概念,我们经常会遇到各种形状的物体,如圆形、矩形、三角形等。在JAVA编程中,我们可以使用面向对象的方式来描述和处理这些几何图形。本文将介绍如何定义一个几何图形的基类Shape
,并以圆形为例定义一个派生类Circle
。
1. Shape类的设计
我们首先来定义一个几何图形的基类Shape
,它包含了常见的属性和方法。
public abstract class Shape {
protected String color;
protected boolean filled;
public Shape() {
this.color = "red";
this.filled = true;
}
public Shape(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
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 abstract double getArea();
public abstract double getPerimeter();
@Override
public String toString() {
return "Shape[color=" + color + ", filled=" + filled + "]";
}
}
上述代码中,Shape
类是一个抽象类,它具有两个实例变量color
和filled
,表示几何图形的颜色和是否填充。构造方法可根据需要进行重载,用于初始化实例变量。getColor
和setColor
方法用于获取和设置颜色,isFilled
和setFilled
方法用于获取和设置填充状态。
此外,Shape
类还定义了两个抽象方法getArea
和getPerimeter
,分别用于计算几何图形的面积和周长。由于不同的几何图形计算面积和周长的方式不同,因此这两个方法在基类中只做了抽象声明,具体的实现由派生类完成。
最后,Shape
类重写了toString
方法,用于返回一个描述几何图形属性的字符串。
2. Circle类的设计
接下来我们以圆形为例,定义一个派生类Circle
,继承自Shape
类。
public class Circle extends Shape {
protected double radius;
public Circle() {
super();
this.radius = 1.0;
}
public Circle(double radius) {
super();
this.radius = radius;
}
public Circle(double radius, String color, boolean filled) {
super(color, filled);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public String toString() {
return "Circle[" + super.toString() + ", radius=" + radius + "]";
}
}
在Circle
类中,我们定义了一个实例变量radius
,表示圆形的半径。构造方法可根据需要进行重载,用于初始化实例变量。getRadius
和setRadius
方法用于获取和设置半径。
同时,Circle
类重写了getArea
和getPerimeter
方法,根据圆形的半径计算面积和周长。toString
方法也进行了重写,用于返回一个描述圆形属性的字符串。
3. 示例代码及运行结果
下面是一个使用Shape
和Circle
类的示例代码:
public class Main {
public static void main(String[] args) {
Shape shape = new Circle(5.0, "blue", true);
System.out.println(shape);
System.out.println("Area: " + shape.getArea());
System.out.println("Perimeter: " + shape.getPerimeter());
}
}
运行结果如下:
Circle[Shape[color=blue, filled=true], radius=5.0]
Area: 78.53981633974483
Perimeter: 31.41592653589793
以上代码