Java抽象类及其实现
任务描述
定义一个形状(sharpe)的抽象类,具有求面积的抽象方法。再分别定义sharpe类的实现类:三角形(triangel)。
编程要求
-
定义一个描述形状(sharpe)的抽象类,包括公有的成员属性PI(常量),求面积的抽象方法getArea(),该方法的返回值类型是double类型,输出面积的抽象方法printArea(),该方法没有返回值;
-
定义三角形类(triangle)继承抽象类sharpe并实现了其抽象方法getArea()和printArea()。
-
三角形类具有私有的属性:a、b、c,用于存放三角形三条边长,数据类型为int。还定义了带三个参数的构造方法,用于给三边赋初值。
-
在getArea()方法中,求面积之前先判断三边是否构成三角形,如果构成三角形,返回三角形的面积,如果不构成三角形,返回值为0。 注:求三角形面积使用海伦公式:s=sqrt(p*(p-a)(p-b)(p-c)),求平方根应调用Math类的sqrt()方法,见书183页。
-
在输出面积的printArea()方法中,调用getArea()方法求三角形面积。若面积为0,输出“不构成三角形”,否则输出三角形的面积; 注:判实数aera是否等于0,应采用如下方法:if(Math.abs(area)<1e-10)。
-
创建测试类TriangleTest,在测试类中创建一个Triangle类的实例,通过构造方法给Triangle类的对象属性赋初值,然后通过该对象调用类的printArea()方法输出三角形的面积。
注: 以上各个类的定义,均各自定义在一个单独的.java文件中。
package case6;/*******在下面定义抽象类Sharpe*****/public class Sharpe {abstract class Area{public abstract void getArea();}
}
package case6;/*******在下面定义三角形类Triangle继承自抽象类Sharpe,并实现其所有的抽象方法*****/
public class Triangle extends Sharpe{private int sideA;private int sideB;private int sideC;double area;boolean bool;public Triangle(int a, int b, int c) {setSide(a,b,c);}public void setSide(int a, int b,int c){sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&b+c>a) {bool=true;}else {bool=false;}}double getArea() {if(bool) {double n=(sideA+sideB+sideC)/2.0;area=Math.sqrt(n*(n-sideA)*(n-sideB)*(n-sideC));return area;}else {return 0;}}
}
package case6;import java.util.Scanner;public class TriangleTest {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int a=scan.nextInt();int b=scan.nextInt();int c=scan.nextInt();/*******在下面创建三角形类Triangle的一个实例,并输出该对象的面积*****/Triangle triangle=new Triangle(a,b,c);triangle.getArea();if(Math.abs(triangle.area)<1e-10)System.out.print("不构成三角形");elseSystem.out.println("三角形的面积是:"+triangle.area);}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
