定义一个抽象类Shape,成员有图形名称(name)和求面积的抽象方法Area()

来源:互联网 发布:java银联支付接口开发 编辑:程序博客网 时间:2024/05/20 05:29

定义一个抽象类Shape,成员有图形名称(name)和求面积的抽象方法Area(),利用继承产生子类三角形类Trangle类,圆Circle类,矩形Rectangle类。并分别实现计算面积的方法计算相应图形的面积。对于Trangle类要求能够实现修改三边,判断三边是否能够构成三角形,根据三边长计算面积的方法。 

Code:
  1. abstract class shape  
  2. {  
  3.    String name;  
  4.    abstract void Area();  
  5. }  
  6. class Trangle extends shape  //三角形类  
  7. {  Trangle(){}  
  8.    double sideA,sideB,sideC;  
  9.    boolean boo;  
  10.    public Trangle(double a,double b,double c)  
  11.    {  
  12.       sideA=a;sideB=b;sideC=c;  
  13.       this.name="三角形";  
  14.       if(a+b>c&&a+c>b&&b+c>a)  
  15.       {  
  16.        System.out.println("我是一个三角形");  
  17.        boo=true;  
  18.       }  
  19.       else  
  20.       {  
  21.        System.out.println("我不是一个三角形");  
  22.        boo=false;  
  23.       }  
  24.    }  
  25.    public void Area()  
  26.    {  
  27.       if(boo)     
  28.       {  
  29.          double p=(sideA+sideB+sideC)/2.0;  
  30.          double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));  
  31.          System.out.println(name+"面积是:"+area);  
  32.       }  
  33.       else  
  34.       {  
  35.          System.out.println("不是一个三角形,不能计算面积");  
  36.       }  
  37.    }  
  38.    public void 修改三边(double a,double b,double c)  
  39.    {  
  40.       sideA=a;sideB=b;sideC=c;  
  41.       if(a+b>c&&a+c>b&&b+c>a)  
  42.       {  
  43.          boo=true;  
  44.       }  
  45.       else  
  46.       {  
  47.          boo=false;  
  48.       }  
  49.    }  
  50. }  
  51. class Circle extends shape   //圆类  
  52. {  
  53.    double r;  
  54.    Circle(double r)  
  55.    {  
  56.       this.r=r;this.name="圆";  
  57.    }  
  58.    public void Area()  
  59.    {  
  60.       System.out.println(name+"面积是:"+3.14*r*r);  
  61.    }  
  62. }  
  63. class Rectangle extends shape   //矩形类  
  64. {  
  65.     double a,b;  
  66.     Rectangle(double a,double b)  
  67.     {  
  68.        this.a=a;this.b=b;this.name="矩形";  
  69.     }  
  70.     public void Area()  
  71.     {  
  72.        System.out.println(name+"面积是:"+a*b);  
  73.     }  
  74. }  
  75. class 图形1  
  76. {  
  77.    public static void main(String[] args)  
  78.    {  
  79.       Trangle t=new Trangle(1,2,3);  
  80.       t.Area();  
  81.       t.修改三边(3,4,5);  
  82.       t.Area();  
  83.         
  84.       Circle c=new Circle(2);  
  85.       c.Area();  
  86.         
  87.       Rectangle r=new Rectangle(4,5);  
  88.       r.Area();  
  89.    }  
  90. }  

对于上题目中的Shape类,改用接口来实现同样的功能

Code:
  1.  interface shape  
  2.  {  
  3.     final String name="图形";  
  4.     void Area();  
  5.  }  
  6.  class Trangle implements shape  
  7.  {  
  8.    Trangle(){}  
  9.    double sideA,sideB,sideC;  
  10.    boolean boo;  
  11.    public Trangle(double a,double b,double c)  
  12.    {  
  13.       sideA=a;sideB=b;sideC=c;  
  14.       if(a+b>c&&a+c>b&&b+c>a)  
  15.       {  
  16.        System.out.println("我是一个三角形");  
  17.        boo=true;  
  18.       }  
  19.       else  
  20.       {  
  21.        System.out.println("我不是一个三角形");  
  22.        boo=false;  
  23.       }  
  24.    }  
  25.    public void Area()  
  26.    {  
  27.       if(boo)     
  28.       {  
  29.          double p=(sideA+sideB+sideC)/2.0;  
  30.          double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));  
  31.          System.out.println(name+"面积:"+area);  
  32.       }  
  33.       else  
  34.       {  
  35.          System.out.println("不是一个三角形,不能计算面积");  
  36.       }  
  37.    }  
  38.    public void 修改三边(double a,double b,double c)  
  39.    {  
  40.       sideA=a;sideB=b;sideC=c;  
  41.       if(a+b>c&&a+c>b&&b+c>a)  
  42.       {  
  43.          boo=true;  
  44.       }  
  45.       else  
  46.       {  
  47.          boo=false;  
  48.       }  
  49.    }  
  50.  }  
  51.  class Circle implements shape   //圆类  
  52. {  
  53.    double r;  
  54.    Circle(double r)  
  55.    {  
  56.       this.r=r;  
  57.    }  
  58.    public void Area()  
  59.    {  
  60.       System.out.println(name+"面积是:"+3.14*r*r);  
  61.    }  
  62. }  
  63. class Rectangle implements shape   //矩形类  
  64. {  
  65.     double a,b;  
  66.     Rectangle(double a,double b)  
  67.     {  
  68.        this.a=a;this.b=b;  
  69.     }  
  70.     public void Area()  
  71.     {  
  72.        System.out.println(name+"面积是:"+a*b);  
  73.     }  
  74. }  
  75.   
  76. class A  
  77. {  
  78.    public void t(shape s)  //接口类型参数  
  79.    {  
  80.      s.Area();            //接口回调  
  81.    }  
  82. }  
  83. class 图形2  
  84. {  
  85.     public static void main(String[] args)  
  86.     {  
  87.        shape s;  
  88.        s=new Trangle(3,4,5);  
  89.        s.Area() ;   //接口回调  
  90.          
  91.        A a=new A();  
  92.        a.t(new Circle(2));  
  93.        a.t(new Rectangle(3,4));  
  94.     }  
  95. }  

原创粉丝点击