5、抽象类、接口应用 编写一个完整的JavaApplication 程序.包含抽象类 Shape, MyTriangle类及Test类,具体要求如下: 1抽象类Shape double getArea():求一个形状的面积 double getPerimeter ():求一个形状的周长 ②类 MyTriangle 由Shape类派生的具体类,除实现Shape类中的方法外,另有以下属性和方法: 属性 X, y, Z: double型,表示三角形的三条边 s:周长的1/2(注:求三角形面积公式为 5(5-x)(s-y)(s-z),s=(x+y+2)/2开方可用Math.sqrt(double)方法) 方法 MyTriangle(double x,double y,double z):构造函数,判断能否构成三角形, 能构成三角形则给三条边和s赋初值,否则输出“不能构成三角形”, 程序结束运行. toString0:返回矩形的描述信息,如: "three sides:3.0,4.05.0,perimeter=12.0,area=6.0" 3Test类作为主类要完成测试功能:生成MyTriangle对象,调用对象的toString方法,获取对象的描述信息并输出.
时间: 2024-03-24 22:41:52 浏览: 46
以下是完整的Java程序:
```java
abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
}
class MyTriangle extends Shape {
private double x, y, z, s;
public MyTriangle(double x, double y, double z) {
if (x + y > z && x + z > y && y + z > x) {
this.x = x;
this.y = y;
this.z = z;
this.s = (x + y + z) / 2;
} else {
System.out.println("不能构成三角形");
System.exit(0);
}
}
public double getArea() {
return Math.sqrt(s * (s - x) * (s - y) * (s - z));
}
public double getPerimeter() {
return x + y + z;
}
public String toString() {
return "three sides:" + x + "," + y + "," + z + ",perimeter=" + getPerimeter() + ",area=" + getArea();
}
}
public class Test {
public static void main(String[] args) {
MyTriangle triangle = new MyTriangle(3.0, 4.0, 5.0);
System.out.println(triangle.toString());
}
}
```
这个程序中,抽象类 `Shape` 定义了两个抽象方法 `getArea` 和 `getPerimeter`,表示求一个形状的面积和周长。类 `MyTriangle` 继承自 `Shape`,实现了这两个方法,同时增加了三个属性 `x`、`y` 和 `z`,表示三角形的三条边,以及一个属性 `s`,表示周长的 1/2。构造函数中检查三条边是否能构成三角形,如果不能则输出错误信息并结束程序。`toString` 方法返回三角形的描述信息。类 `Test` 则作为程序的主类,生成一个 `MyTriangle` 对象并调用其 `toString` 方法输出描述信息。
阅读全文