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);}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部