用JAVA设计一个抽象类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。
时间: 2024-10-29 21:10:14 浏览: 316
java代码-类名为Rectangle(矩形),它有两个整型的变量width(宽)和height(高);有一个方法area(),没有参数,返回类型为double,功能是求矩形的面积;还有另一个方法为perimeter()没有参数,返回类型为double,功能是求矩形的周长
5星 · 资源好评率100%
在Java中,我们可以设计一个抽象类`Shape`来描述图形的基本属性和行为,然后通过多态创建具体的子类如`Circle`和`Triangle`。这里是一个简单的示例:
```java
// 抽象类 Shape
abstract class Shape {
protected String color; // 设置颜色的方法
public Shape(String color) {
this.color = color;
}
// 求面积和周长的抽象方法
public abstract double getArea();
public abstract double getPerimeter();
// 设置颜色的方法
public void setColor(String color) {
this.color = color;
}
// 获取颜色的getter方法
public String getColor() {
return color;
}
// 打印图形信息的通用方法
@Override
public String toString() {
return "Shape [color=" + color + "]";
}
}
// 子类 Circle - 圆形
class Circle extends Shape {
private double radius;
public Circle(double radius, String color) {
super(color);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public String toString() {
return "Circle [radius=" + radius + ", color=" + super.getColor() + "]";
}
}
// 子类 Triangle - 三角形
class Triangle extends Shape {
private double base;
private double height;
public Triangle(double base, double height, String color) {
super(color);
this.base = base;
this.height = height;
}
@Override
public double getArea() {
return 0.5 * base * height;
}
@Override
public double getPerimeter() {
// 假设三角形由三边组成,这里仅提供一种可能的方式
// 实际应用中可能需要存储每个边长并计算总和
return base + calculateOtherSide(base, height);
}
// 这里是一个假设的辅助方法,用于计算第三边
private double calculateOtherSide(double base, double height) {
// ... 具体计算方法取决于三角形的类型(等腰、直角等)
// 返回第三边长度,这里是示例代码,实际需根据具体三角形类型确定
return 10; // 假设是固定长度
}
@Override
public String toString() {
return "Triangle [base=" + base + ", height=" + height + ", color=" + super.getColor() + "]";
}
}
```
在这个例子中,`Circle`和`Triangle`类都实现了`Shape`中的抽象方法,分别计算各自的面积和周长。由于它们都有各自的特性和计算方式,所以不需要再重写`setColor()`方法。
阅读全文