在java中,编写一个Shape类,具有属性:周长和面积;定义其子类三角形和矩形,分别具有求周长的方法。定义主类E,在其main方法中创建三角形和矩形类的对象,并赋给Shape类的对象a、b,使用对象a、b来测试其特性。
时间: 2024-11-13 08:22:31 浏览: 58
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
在Java中,你可以按照以下步骤创建一个多态的例子:
首先,我们定义一个基础类`Shape`,它有共同的属性如周长和面积,但是具体的计算留给子类去实现:
```java
public abstract class Shape {
protected double perimeter;
protected double area;
public Shape(double perimeter, double area) {
this.perimeter = perimeter;
this.area = area;
}
// 公共方法,子类需要覆盖
public abstract void calculatePerimeter();
// 共享的getter方法
public double getPerimeter() {
return perimeter;
}
}
```
接着,我们为`Shape`类创建两个子类`Triangle`和`Rectangle`,它们分别实现`calculatePerimeter()`方法:
```java
public class Triangle extends Shape {
private double sideA;
private double sideB;
private double sideC;
public Triangle(double a, double b, double c) {
super(calculateTrianglePerimeter(a, b, c), (a + b + c) / 2); // 假设三角形周长等于三边之和
sideA = a;
sideB = b;
sideC = c;
}
private double calculateTrianglePerimeter(double a, double b, double c) {
// 实现三角形周长的具体计算
}
@Override
public void calculatePerimeter() {
// 在这里计算并设置perimeter
}
}
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
super(2 * (width + height), width * height);
this.width = width;
this.height = height;
}
@Override
public void calculatePerimeter() {
// 在这里计算并设置perimeter
}
}
```
最后,在主类`E`中,我们可以这样创建并操作对象:
```java
public class E {
public static void main(String[] args) {
Triangle triangle = new Triangle(3, 4, 5);
Rectangle rectangle = new Rectangle(5, 6);
Shape a = triangle; // 将三角形赋值给Shape类型的引用
Shape b = rectangle;
System.out.println("Triangle perimeter: " + a.getPerimeter()); // 调用triangle的perimeter
System.out.println("Rectangle perimeter: " + b.getPerimeter()); // 调用rectangle的perimeter
// 子类对象调用自己的方法
a.calculatePerimeter(); // 输出三角形的周长
b.calculatePerimeter(); // 输出矩形的周长
}
}
```
阅读全文