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 classShaped2D {abstract public doublegetArea();abstract public doublegetL();
}
3.circle类,里面就用父类的两个方法来算圆的周长和面积
public class Circle extendsShaped2D{private doubler;public Circle(doubler) {this.r=r;
}public doublegetArea() {return r*Math.PI*r;
}public doublegetL() {return Math.PI*r*2;
}
}
4.triangle类也是使用父类的两个方法来计算三角形的周长
public class Triangle extendsShaped2D{private doublea,b,c;public Triangle(double a,double b,doublec) {this.a=a;this.b=b;this.c=c;
}public doublegetArea() {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 doublegetL() {if(a+b>c&&a+c>b&&b+c>a) {return a+b+c;
}else
return -1;
}
}
4.Rectangle类也是使用父类的两个方法来计算长方形的周长和面积
public class Rectangle extendsShaped2D{private doublea,b;public Rectangle(double a,doubleb) {this.a=a;this.b=b;
}public doublegetArea() {return a*b;
}public doublegetL() {return 2*a+2*b;
}
}
5.Rectangle是Square的父类,直接引用父类的方法即可
public class Square extendsRectangle{public Square(doublea) {super(a, a);
}
}
6.主函数代码
public classmain {public static voidmain(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.试验结果