定义一个形状抽象类,包含求周长和面积的方法,私有化成员变量(Name, Color)再定义圆类和正方形类的继承形状类,实现求周长和面积的方法。
时间: 2024-12-24 13:29:56 浏览: 12
在面向对象编程中,可以创建一个名为`Shape`的抽象类,作为所有形状的基础,它定义了公共的行为特征如求周长和面积的方法,以及一些私有的属性如名称和颜色。抽象类通常不会提供具体的实例,而是用于定义接口。下面是一个简单的例子:
```java
// 抽象Shape类
public abstract class Shape {
private String name;
private String color;
// 私有构造函数防止直接实例化抽象类
protected Shape(String name, String color) {
this.name = name;
this.color = color;
}
// 抽象方法,需要在每个子类中实现
public abstract double getPerimeter();
public abstract double getArea();
// 公共方法,获取形状信息
public String getName() { return name; }
public String getColor() { return color; }
}
```
然后我们可以定义两个具体的子类,`Circle`和`Square`,它们继承自`Shape`并实现了`getPerimeter()`和`getArea()`方法:
```java
// 圆形类 Circle
public class Circle extends Shape {
private double radius;
public Circle(String name, String color, double radius) {
super(name, color);
this.radius = radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
// 正方形类 Square
public class Square extends Shape {
private double side;
public Square(String name, String color, double side) {
super(name, color);
this.side = side;
}
@Override
public double getPerimeter() {
return 4 * side;
}
@Override
public double getArea() {
return side * side;
}
}
```
现在,你可以通过`Shape`类型的引用去操作圆或正方形对象,因为它们都实现了`Shape`的公共方法。这就是多态的一个应用。
阅读全文