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

abstract class shape { String name; abstract void Area(); } class Trangle extends shape //三角形类 { Trangle(){} double sideA,sideB,sideC; boolean boo; public Trangle(double a,double b,double c) { sideA=a;sideB=b;sideC=c; this.name="三角形"; if(a+b>c&&a+c>b&&b+c>a) { System.out.println("我是一个三角形"); boo=true; } else { System.out.println("我不是一个三角形"); boo=false; } } public void Area() { if(boo) { double p=(sideA+sideB+sideC)/2.0; double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)); System.out.println(name+"面积是:"+area); } else { System.out.println("不是一个三角形,不能计算面积"); } } public void 修改三边(double a,double b,double c) { sideA=a;sideB=b;sideC=c; if(a+b>c&&a+c>b&&b+c>a) { boo=true; } else { boo=false; } } } class Circle extends shape //圆类 { double r; Circle(double r) { this.r=r;this.name="圆"; } public void Area() { System.out.println(name+"面积是:"+3.14*r*r); } } class Rectangle extends shape //矩形类 { double a,b; Rectangle(double a,double b) { this.a=a;this.b=b;this.name="矩形"; } public void Area() { System.out.println(name+"面积是:"+a*b); } } class 图形1 { public static void main(String[] args) { Trangle t=new Trangle(1,2,3); t.Area(); t.修改三边(3,4,5); t.Area(); Circle c=new Circle(2); c.Area(); Rectangle r=new Rectangle(4,5); r.Area(); } }

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

interface shape { final String name="图形"; void Area(); } class Trangle implements shape { Trangle(){} double sideA,sideB,sideC; boolean boo; public Trangle(double a,double b,double c) { sideA=a;sideB=b;sideC=c; if(a+b>c&&a+c>b&&b+c>a) { System.out.println("我是一个三角形"); boo=true; } else { System.out.println("我不是一个三角形"); boo=false; } } public void Area() { if(boo) { double p=(sideA+sideB+sideC)/2.0; double area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)); System.out.println(name+"面积:"+area); } else { System.out.println("不是一个三角形,不能计算面积"); } } public void 修改三边(double a,double b,double c) { sideA=a;sideB=b;sideC=c; if(a+b>c&&a+c>b&&b+c>a) { boo=true; } else { boo=false; } } } class Circle implements shape //圆类 { double r; Circle(double r) { this.r=r; } public void Area() { System.out.println(name+"面积是:"+3.14*r*r); } } class Rectangle implements shape //矩形类 { double a,b; Rectangle(double a,double b) { this.a=a;this.b=b; } public void Area() { System.out.println(name+"面积是:"+a*b); } } class A { public void t(shape s) //接口类型参数 { s.Area(); //接口回调 } } class 图形2 { public static void main(String[] args) { shape s; s=new Trangle(3,4,5); s.Area() ; //接口回调 A a=new A(); a.t(new Circle(2)); a.t(new Rectangle(3,4)); } }

java 抽象类 Shape相关推荐

  1. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  2. 编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法

    编写一个抽象类Shape,声明计算图形面积的抽象方法.再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法 ...

  3. (自用)java博客作业3 Java抽象类

    Java 抽象类 Java 抽象类 在 Java 面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样 ...

  4. java抽象类例子_java抽象类经典实例分享

    在这之前有给大家详细的介绍过java抽象类,相信很多人应该都比较了解了,那么下面就要继续来给大家分享一个java抽象类的实例. 题目: 不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样 ...

  5. Java抽象类中是否可以有构造方法

    直接给答案:可以 无论是无参构造方法,还是有参构造方法都可以正常存在 之所以产生这个疑问,是因为Java抽象类本身的要求抽象类是不能被实例化的,抽象类只能作为其他类的父类,或者通过向上转型指向其子类. ...

  6. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  7. Java接口和Java抽象类的认识

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  8. java 抽象类 模板_Java抽象类的构造模板模式用法示例

    搜索热词 本文实例讲述了Java抽象类的构造模板模式用法.分享给大家供大家参考,具体如下: 一 点睛 模板模式的一些简单规则. 抽象父类可以只定义需要使用的某些方法,而不能实现的部分抽象成抽象方法,留 ...

  9. IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...

    IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...

最新文章

  1. SpringBoot-Security-用户权限分配-配置验证规则
  2. C#如何进行多线程编程
  3. 《构建之法》需求分析 读书笔记 Week6
  4. 微众WeCross 跨链平台(10)使用场景
  5. Pasha and Phone
  6. ORACLE中科学计数法显示问题的解决
  7. 计算机课听课评议,听课优缺点评语
  8. canvas绘制字体
  9. 《深入理解Spark:核心思想与源码分析》——1.3节阅读环境准备
  10. 拓端tecdat|TensorFlow 2.0 keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
  11. php格式怎么转换为pdf,PHP如何将将word文件转为pdf
  12. 百度文库免财富值下载漏洞
  13. 最新xcode打包IPA(完整详细图文)
  14. 《头文字D》热门同人插画欣赏
  15. 群晖第三方套件中心地址
  16. shell 追加指定内容至某文件
  17. 服务器协议和交换机怎么转换,服务器与交换机连接怎样配置
  18. c语言判断两个单词是否为变位词,C++变位词问题分析
  19. arduino实验日记
  20. App Inventor 四字节转单精度浮点数

热门文章

  1. Shelve Silently 静默搁置 Android Studio Git 功能
  2. 甘肃兰州年内发行市民卡
  3. 白嫖党最爱!java中break跳出多层循环
  4. Micro(三)[服务创建]
  5. 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)
  6. 约瑟夫环问题(用数学方法推出计算公式)
  7. 标贝科技登全球语音大赛舞台Blizzard Challenge做精彩开场发言
  8. 管理者运动初衷不是竞技,只为健康吗?
  9. 世态炎凉,冷暖自知-一名某易公司员工自述的裁员经历
  10. [NOI2005]月下柠檬树 (自适应辛普森)