首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
java抽象设计和抽象方法
时间:
2017-12-27 18:50:29
阅读:
143
评论:
0
收藏:
0
[点我收藏+]
标签:
java抽象设计和抽象方法
/*抽象设计和抽象方法 使用abstract修饰且没有方法体的方法,称为抽象方法 */ /* //图形 class Graph { public Double getAres() { return 0.0; } } //圆 class Circle extends Graph { private Integer r; Circle(Integer r) { this.r = r; } //求面积 public Double getAres() { return 3.14 * r * r; } } //矩形 class Rectangles extends Graph { private Integer witdh; private Integer beight; Rectangles(Integer witdh, Integer beight) { this.witdh = witdh; this.beight = beight; } //求面积 public Double getAres() { return witdh.doubleValue() * beight.doubleValue(); } } //三角形 class Triangle extends Graph { private Integer a; private Integer b; private Integer c; Triangle(Integer a, Integer b, Integer c) { this.a = a; this.b = b; this.c = c; } //在这个类中先不定义getAres方法,也就是说不覆盖父类求面积的方法 } class AbstractDemo { public static void main(String[] args) { //求圆的面积 System.out.println(new Circle(10).getAres()); //求矩形的面积 System.out.println(new Rectangles(5,7).getAres()); //求三角形的面积 System.out.println(new Triangle(3,4,5).getAres()); } } /* /* 上诉设计的问题: 1、每一个图形都有面积,所以在Graph类中定义求面积的方法 但是,不同的具体图形求面积的算法是不一样的,也就是说每个子类 都必须去覆盖getAres方法,如果不覆盖应该语法报错,但是目前没有报错 2、在图形类中定义了getAres方法,该方法不应该存在方法体,因为不同图形 子类求面积算法不一样,父类真不知道该怎么写,所以应该提供无方法体 3、要解决这个问题,就得要用抽象方法来解决(没有方法体,必须要求子类覆盖) */ //--------------------------抽象方法登场!!!---------------------------------- /* 使用abstract修饰且没有方法体的方法,称为抽象方法,他是一个修饰符 */ //图形 abstract class Graph //抽象类(不能创建对象,即使创建出抽象类对象也没有意义,抽象类必须要有子类) { abstract public Double getAres(); //抽象方法(无方法体,不存在任何功能性代码,必须要被子类覆盖这个方法,有子类去完成功能,如子类不覆盖则编译报错) //抽象类可以存在普通方法,用于给子类调用 public void doWork() { System.out.println("hello"); } } //圆 class Circle extends Graph { private Integer r; Circle(Integer r) { this.r = r; } //求面积 public Double getAres() { return 3.14 * r * r; } } //矩形 class Rectangles extends Graph { private Integer witdh; private Integer beight; Rectangles(Integer witdh, Integer beight) { this.witdh = witdh; this.beight = beight; } //求面积 public Double getAres() { return witdh.doubleValue() * beight.doubleValue(); } } //三角形 class Triangle extends Graph { private Integer a; private Integer b; private Integer c; Triangle(Integer a, Integer b, Integer c) { this.a = a; this.b = b; this.c = c; } public Double getAres() { Double p = (a+b+c)/2.0; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } } class AbstractDemo { public static void main(String[] args) { //求圆的面积 System.out.println(new Circle(10).getAres()); //求矩形的面积 System.out.println(new Rectangles(5,7).getAres()); //求三角形的面积 System.out.println(new Triangle(3,4,5).getAres()); new Triangle(3,4,5).doWork(); //调用抽象类中的普通方法 //不能创建抽象类对象 //Graph a = new Graph(); } }
java抽象设计和抽象方法
标签:
java抽象设计和抽象方法
原文地址:http://blog.51cto.com/freshair/2055203
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!