設計一個抽象類圖形類,在該類中包含有至少兩個抽象方法求周長和求面積,分別定義圓形類、長方形類、正方形類來繼承圖形類,並實現上述兩個方法。並創建實例驗證。
直接上代碼了
package ThirdDay;
abstract class Shape {
public abstract Double calculateS();
public abstract Double calculateC();
}
class Rectangle extends Shape{
private double l;
private double s;
public Rectangle(double l, double s) {
this.l = l;
this.s = s;
}
public double getL() {
return l;
}
public void setL(double l) {
this.l = l;
}
public double getS() {
return s;
}
public void setS(double s) {
this.s = s;
}
@Override
public Double calculateS() {
return s*l;
}
@Override
public Double calculateC() {
return 2*(s+l);
}
}
class Square extends Shape{
private double sideLength;
public Square(double sideLength) {
this.sideLength = sideLength;
}
public double getSideLength() {
return sideLength;
}
public void setSideLength(double sideLength) {
this.sideLength = sideLength;
}
@Override
public Double calculateS() {
return Math.pow(sideLength,2);
}
@Override
public Double calculateC() {
return 4*sideLength;
}
}
class Triangle extends Shape{
private double a;
private double b;
private double c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
@Override
public Double calculateS() {
double s = (a + b + c) / 2;
double area = Math.pow(s*((s - a)*(s - b)*(s - c)), 0.5);
return area;
}
@Override
public Double calculateC() {
return a+b+c;
}
}
class Circle extends Shape{
private double r;
public Circle(double r) {
this.r = r;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public Double calculateS() {
return Math.PI*r*r;
}
@Override
public Double calculateC() {
return 2*Math.PI*r;
}
}
class Graphice {
public static void main(String[] args) {
Circle circle=new Circle(2.5);
System.out.println("半徑爲:"+circle.getR()+"的圓面積爲:"+circle.calculateC());
System.out.println("半徑爲:"+circle.getR()+"的圓周長爲:"+circle.calculateS());
Triangle triangle=new Triangle(3,4,5);
if (triangle.getA() > 0 && triangle.getB()> 0 && triangle.getC() > 0 &&
(triangle.getA()+ triangle.getB()) > triangle.getC() && (triangle.getA() + triangle.getC()) > triangle.getB() && (triangle.getB() + triangle.getC()) > triangle.getA()) {
System.out.println("三角形的a,b,c三邊長爲:"+triangle.getA()+","+triangle.getB()+","+triangle.getC());
System.out.println("三角形的周長爲 = " + triangle.calculateC());
System.out.println("三角形的面積 = " + triangle.calculateS());
}else {
System.out.println("\n三角形三邊不合法! 三角形創建失敗! "
+ "\n請重新輸入三邊\n");
}
Rectangle rectangle=new Rectangle(5,2);
System.out.println("長爲:"+rectangle.getL()+"寬爲:"+rectangle.getS()+"的長方形面積爲:"+rectangle.calculateS());
System.out.println("長爲:"+rectangle.getL()+"寬爲:"+rectangle.getS()+"的長方形周長爲:"+rectangle.calculateC());
Square square=new Square(2);
System.out.println("邊長爲:"+square.getSideLength()+"的正方形面積爲:"+square.calculateS());
System.out.println("邊長爲:"+square.getSideLength()+"的正方形周長爲:"+square.calculateC());
}
}
運行結果如下
半徑爲:2.5的圓面積爲:15.707963267948966
半徑爲:2.5的圓周長爲:19.634954084936208
三角形的a,b,c三邊長爲:3.0,4.0,5.0
三角形的周長爲 = 12.0
三角形的面積 = 6.0
長爲:5.0寬爲:2.0的長方形面積爲:10.0
長爲:5.0寬爲:2.0的長方形周長爲:14.0
邊長爲:2.0的正方形面積爲:4.0
邊長爲:2.0的正方形周長爲:8.0