抽象类与抽象方法 自行设计一个抽象类以及基于此抽象类的2个普通类。 用文字描述上述类的设计理念,每个类的成员情况,抽象类与普通类对应成员之间的联系与区别。
时间: 2024-09-12 17:11:23 浏览: 40
C#抽象类与抽象方法
5星 · 资源好评率100%
抽象类是一种特殊的类,它不能被实例化,主要用于声明共有的属性和方法,供派生类继承。抽象类可以包含抽象方法,这些方法没有具体的实现代码,只有方法的声明,具体的实现由派生类提供。抽象类的目的是为了给子类提供一个共同的模板,并通过抽象方法强制子类提供特定的实现。
下面是自行设计的一个抽象类及基于此抽象类的两个普通类的示例:
```java
// 抽象类 Shape
abstract class Shape {
// 共有属性
private String color;
// 构造方法
public Shape(String color) {
this.color = color;
}
// 抽象方法 area
public abstract double area();
// 抽象方法 perimeter
public abstract double perimeter();
// 共有方法
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
// 普通类 Circle,继承自 Shape
class Circle extends Shape {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
@Override
public double perimeter() {
return 2 * Math.PI * radius;
}
}
// 普通类 Rectangle,继承自 Shape
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(String color, double width, double height) {
super(color);
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
@Override
public double perimeter() {
return 2 * (width + height);
}
}
```
设计理念:
- **抽象类 Shape**:设计为一个抽象类,包含基本的几何形状的属性和行为。它定义了颜色属性、计算面积和周长的抽象方法,为具体的几何形状提供了一个标准的模板。
- **普通类 Circle**:表示圆形,继承自 Shape 类。它增加了一个半径属性,具体实现了计算面积和周长的方法。
- **普通类 Rectangle**:表示矩形,同样继承自 Shape 类。它增加了宽度和高度属性,并具体实现了计算面积和周长的方法。
联系与区别:
- **联系**:Circle 和 Rectangle 都继承自 Shape 类,这意味着它们都拥有 Shape 类定义的共有属性和方法。它们都必须实现 Shape 类中定义的抽象方法 area() 和 perimeter()。
- **区别**:Circle 类实现了圆面积和周长的计算,而 Rectangle 类实现了矩形面积和周长的计算。每个普通类都根据自己的几何特性,提供了具体的实现细节。这展示了面向对象编程中的多态性,即不同的对象可以响应相同的消息(方法调用),但是执行的方式不同。
阅读全文