定义一个抽象类Shape,它包含一个抽象方法getArea(),从Shape类派生出Rectangle和Circle类,这两个类都用getArea()方法计算对象的面积。编写应用程序使用Rectangle和Circle类。 实验要求:定义Rectangle和Circle类的构造方法,初始化成员变量。设计一个继承自抽象类Shape的新的Triangle类,并编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该三角形是否填充的布尔值。程序应该根据用户的输入,使用这些边以及颜色和是否填充的信息,创建一个Triangle对象。程序应该显示面积、周长、颜色以及真或者假来表明是否被填充。
时间: 2023-02-09 13:46:33 浏览: 83
抽象类Shape:
```
abstract class Shape {
abstract double getArea();
}
```
从Shape类派生的Rectangle类:
```
class Rectangle extends Shape {
double length;
double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
double getArea() {
return length * width;
}
}
```
从Shape类派生的Circle类:
```
class Circle extends Shape {
double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double getArea() {
return Math.PI * radius * radius;
}
}
```
继承自Shape类的新的Triangle类:
```
class Triangle extends Shape {
double side1;
double side2;
double side3;
String color;
boolean filled;
public Triangle(double side1, double side2, double side3, String color, boolean filled) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
this.color = color;
this.filled = filled;
}
@Override
double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
double getPerimeter() {
return side1 + side2 + side3;
}
}
```
测试程序:
```
import java.util.Scanner;
public class TestShape {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入三角形的三条边: ");
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
System.out.print("输入三角形的颜色: ");
String color = input.next();
System.out.print("输入三角形是否填充(true/false): ");
boolean filled = input.nextBoolean();
Triangle triangle = new Triangle(side1, side2, side3, color, filled);
System.out.println("面积: " + triangle.getArea());
System.out.println("周长: " + triangle.getPerimeter());
System.out.println("颜色: " + triangle.color);
System.out.println("是否填充: " + triangle.filled);
}
}
```