JAVA——编写一个计算各种形状的面积和周长的程序
1.要求:
父类Shape2D为一个抽象类,其中包含计算周长和计算面积两个抽象方法。其他形状圆(Circle),三角形(Triangle)和长方形(Rectangle)类均继承自Shape2D类。而正方形Square类继承自Rectangle类。编写计算这些形状的面积和周长的各类的程序。
abstract public double getArea();//计算面积的方法 abstract public double getL();//计算周长的方法 如果三角形的边不满足要求,这两方法都返回-1 PI=3.14159 各类的构造函数如下: public Circle(double r);r为圆的半径 public Triangle(double a,double b,double c);a,b,c为三边的长 public Rectangle(double a,double b);a,b为长宽 public Square(double a);a为边长
2.父类,Shape2D类里面就是两个抽象方法即可
abstract class Shaped2D { abstract public double getArea(); abstract public double getL(); }
3.circle类,里面就用父类的两个方法来算圆的周长和面积
public class Circle extends Shaped2D{ private double r; public Circle(double r) { this.r=r; } public double getArea() { return r*Math.PI*r; } public double getL() { return Math.PI*r*2; } }
4.triangle类也是使用父类的两个方法来计算三角形的周长
public class Triangle extends Shaped2D{ private double a,b,c; public Triangle(double a,double b,double c) { this.a=a; this.b=b; this.c=c; } public double getArea() { if(a+b>c&&a+c>b&&b+c>a) { double p=(a+b+c)/2.0; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } else return -1; } public double getL() { if(a+b>c&&a+c>b&&b+c>a) { return a+b+c; } else return -1; } }
4.Rectangle类也是使用父类的两个方法来计算长方形的周长和面积
public class Rectangle extends Shaped2D{ private double a,b; public Rectangle(double a,double b) { this.a=a; this.b=b; } public double getArea() { return a*b; } public double getL() { return 2*a+2*b; } }
5.Rectangle是Square的父类,直接引用父类的方法即可
public class Square extends Rectangle{ public Square(double a) { super(a, a); } }
6.主函数代码
public class main { public static void main(String[] args) { // TODO Auto-generated method stub Circle c1=new Circle(3); System.out.println("周长为:"+c1.getL()+" 面积为:"+c1.getArea()); Triangle c2=new Triangle(1,3,3); System.out.println("周长为:"+c2.getL()+" 面积为:"+c2.getArea()); Rectangle c3=new Rectangle(3,5); System.out.println("周长为:"+c3.getL()+" 面积为:"+c3.getArea()); Square c4=new Square(4); System.out.println("周长为:"+c4.getL()+" 面积为:"+c4.getArea()); } }
7.试验结果


浙公网安备 33010602011771号