建立一个合适的继承体系shape类,测试 public 继承下的基类不同访问权限的派生类调用
时间: 2024-10-17 10:14:45 浏览: 25
在创建一个合理的继承体系时,我们可以先定义一个基础形状类`Shape`,然后让其他更具特定特性的形状如`Circle`, `Rectangle`, 等等继承自`Shape`。这里我们假设`Shape`类有公共访问权限(public),而其内部方法和属性可以分为三种访问修饰符:私有(private)、受保护(protected)和公有的。
```java
// Shape.java (公共基类)
public class Shape {
// 公共属性
public String color;
// 公共方法
public void setColor(String color) {
this.color = color;
}
// 受保护方法
protected void calculateArea() {
System.out.println("Calculating area...");
}
}
// Circle.java (继承Shape并添加私有方法)
public class Circle extends Shape {
private double radius;
// 私有方法
private double calculateCircleArea() {
return Math.PI * radius * radius;
}
// 公开访问父类受保护方法
@Override
public void calculateArea() {
super.calculateArea();
System.out.println("Circle area: " + calculateCircleArea());
}
}
// Rectangle.java (继承Shape并添加私有方法)
public class Rectangle extends Shape {
private double width;
private double height;
// 私有方法
private double calculateRectangleArea() {
return width * height;
}
// 公开访问父类受保护方法
@Override
public void calculateArea() {
super.calculateArea();
System.out.println("Rectangle area: " + calculateRectangleArea());
}
}
```
在这个例子中,`Circle`和`Rectangle`都可以通过继承`Shape`并公开访问`calculateArea()`方法来计算各自的面积,并且可以根据自身需要添加额外的私有属性和方法。这是因为它们都实现了对`Shape`中公共方法的覆盖(overriding),同时保持了`Shape`类中受保护方法的可访问性。
阅读全文