1.接口中声明抽象方法 2.公共类shape,需要有各子类共同的变量以及方法。子类调用父类的构造方法使super完成 3.设计一个模拟类,内有方法show,形参为接口对象,主方法调用,给方法传递个子类对象,输出各自的面积、周长。其中梯形周长返回值为0
时间: 2024-12-22 21:26:09 浏览: 3
1. 接口中声明抽象方法是面向对象设计的一种手段,它是一种特殊的函数声明,在接口中,方法只能声明而不能提供具体的实现。如果接口中有方法没有实现,那么使用这个接口的类也必须实现这些方法,否则会成为抽象类。例如,声明一个接口`Shape`,里面可以有抽象方法`calculateArea()`和`calculatePerimeter()`:
```java
public interface Shape {
double calculateArea();
double calculatePerimeter();
}
```
2. 公共类`Shape`通常用于存储所有形状的共享属性和通用行为。例如,我们可以设置一个共同的`color`变量和一个`draw()`方法,然后让每个子类如`Rectangle`, `Circle`, `Triangle`等通过父类引用调用`super`构造方法:
```java
public class Shape {
protected String color;
public Shape(String color) {
this.color = color;
}
public void draw() {
System.out.println("Drawing " + color);
}
}
```
3. 设计模拟类`Display`,有一个方法`show(Shape shape)`,接受一个`Shape`类型的接口对象作为参数。在`main`方法中,你可以创建具体的子类实例,比如`Trapezoid`,然后传递给`show`方法:
```java
class Display {
public void show(Shape shape) {
if (shape instanceof Trapezoid) {
Trapezoid trapezoid = (Trapezoid) shape;
System.out.println("Trapezoid area: " + trapezoid.calculateArea());
// 梯形的周长返回值为0
System.out.println("Trapezoid perimeter: 0");
} else {
shape.calculateArea(); // 调用其他形状的面积计算
shape.calculatePerimeter(); // 调用其他形状的周长计算
}
}
}
// 主方法
public static void main(String[] args) {
Display display = new Display();
Shape rectangle = new Rectangle();
Shape circle = new Circle();
display.show(rectangle); // 输出矩形的面积和周长
display.show(circle); // 输出圆的面积和周长
// 示例:如果使用Trapezoid
Trapezoid trapezoid = new Trapezoid();
display.show(trapezoid); // 输出梯形的面积(假设已实现),周长为0
}
```
阅读全文