设计圆形、三角形、二维图形等类;利用继承和多态的知识实现图形面积等的求解(必做) 2、考虑采取抽象类的形式来实现1中的功能(必做)
时间: 2024-09-30 07:09:31 浏览: 32
在面向对象编程中,我们可以设计一系列的图形类来表示形状的不同实例,如圆形、三角形和二维图形。这里会使用OOP的基本原则,即封装、继承和多态。
首先,我们会创建一个抽象基类`Shape`,它包含一些通用属性和计算面积的抽象方法:
```java
abstract class Shape {
protected double dimension;
public abstract double getArea();
}
```
接着,我们为每个具体的形状创建子类,并覆盖抽象方法`getArea()`:
1. `Circle`类:
```java
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
```
2. `Triangle`类:
```java
class Triangle extends Shape {
private double base, height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
public double getArea() {
return 0.5 * base * height;
}
}
```
通过继承`Shape`,子类可以共享共同的属性和行为,同时提供各自特有的实现。比如现在要计算一个图形的面积,只需要创建对应的形状实例并调用其`getArea()`方法:
```java
public static void main(String[] args) {
Shape circle = new Circle(5);
Shape triangle = new Triangle(4, 6);
System.out.println("Circle area: " + circle.getArea());
System.out.println("Triangle area: " + triangle.getArea());
}
```
这里体现了多态的优势,因为`getArea()`方法的调用并不依赖于实际的对象类型,而是基于它们共享的抽象类`Shape`,这使得代码更具灵活性。