抽象方法可以有方法体_抽象类和模板方法设计模式
抽象方法和抽象类
抽象类:用abstract修饰符修饰的类,如:
public abstract class GeneralService { }
抽象方法:用abstract修饰符修饰的方法,抽象方法不能有方法体,如:
public abstract void service();
抽象类和抽象方法的规则如下:
- 必须用abstract修饰符修饰
- 抽象类不一定包含抽象方法,但含有抽象方法的类一定是抽象类
- 抽象类不能被实例化
- 抽象类的构造器不能用于创建对象,主要是用于被其子类调用
下面定义一个Shape抽象类:
/** * 定义一个抽象类,用于描述抽象概念的“形状” */public abstract class Shape { // 形状的 颜色 private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } // 带参构造器 public Shape(String color) { this.color = color; } // 定义一个计算周长的抽象方法 public abstract double calPerimeter();}
上面的Shape类中包含了一个抽象方法calPerimeter(),所以Shape类只能是抽象类。Shape类中既包含初始化块,又包含构造器,不过这些都不是在创建Shape对象时被调用的,而是在创建其子类对象时被调用。
下面定义一个Triangle类和一个Circle类,让他们继承Shape类,并实现Shape中的抽象方法calPerimeter()。
/** * 定义一个三角形类,继承自形状类 */public class Triangle extends Shape { // 定义三角形的三条边 private double a; private double b; private double c; public Triangle(String color, double a, double b, double c) { super(color); this.a = a; this.b = b; this.c = c; } @Override public double calPerimeter() { return a + b + c; }}/** * 定义一个圆形类,继承自形状类 */public class Circle extends Shape { // 定义圆的半径 private double radius; public Circle(String color, double radius) { super(color); this.radius = radius; } @Override public double calPerimeter() { return 2 * Math.PI * this.radius; }}
Shape(形状)类是一个抽象的概念,Triangle(三角形)类和Circle(圆形)类是Shape的具象,它们都各自实现了Shape的calPerimeter()方法,两者计算周长的公式不一样。
下面是测试类:
/** * 测试类 */public class Test { public static void main(String[] args) { Shape s1 = new Triangle("黄色
抽象方法可以有方法体_抽象类和模板方法设计模式相关推荐
- 抽象方法可以有方法体_什么方法可以祛斑?祛斑的方法有哪些?
现在是一个看脸的时代,可能不那么准确,但是也说明了人们对于美好脸蛋的追求.完美的脸蛋必定是光滑白皙没有瑕疵的,而有了色斑就会损害整个人的颜值.祛斑的方法有哪些?若是您正深受长斑的烦恼,小编专门寻找了一 ...
- 抽象方法可以有方法体_装配滑动轴承和滚动轴承的方法|垫片|轴瓦|轴套|轴承体...
轴承是用来支撑的部件,也是用来支撑轴上回转的零件,轴承的种类按摩擦性质分:有滑动轴承和滚动轴承:按承受载荷的方向分:有向心轴承.推动轴承.向心推力轴承等. 1.滑动轴承的装配 滑动轴承是一种滑动摩擦性 ...
- Java 基础进阶篇(四):抽象类与模板方法设计模式
文章目录 一.抽象类.抽象方法概述 二.抽象类的特征 三.模板方法设计模式 3.1使用场景 3.2 实现步骤 3.3 写作文案例 补充:final 和 abstract 是什么关系? 一.抽象类.抽象 ...
- 12_星仔带你学Java之代码块、final修饰符、基本类型包装类、抽象类、模板方法设计模式讲解
大家好,我是
- java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super
目录点击跳转 包 包的命名方法 导入包中的类 系统包的介绍 **注意事项** 继承 基础知识 构造方法 **基础语法** `protected`修饰符 组合 `this`和`super`关键字 `th ...
- 抽象类和模板方法模式
抽象方法和抽象类 抽象类:用abstract修饰符修饰的类,如: public abstract class GeneralService {} 抽象方法:用abstract修饰符修饰的方法,抽象方法 ...
- 黑马程序员_抽象类和接口
------- android培训.java培训.期待与您交流! ---------- ★抽象类 我们在定义一个类的时候,常常需要定义方法来描述该类的行为特征, 但有的时候这个(方法)的{方法体}怎样 ...
- 【26天高效学完Java编程】Day11:继承、抽象类、模板设计模式详解
本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...
- 0047 抽象类、模板设计模式
/*抽象类1.用abstract关键字来修饰一个类时,这个类就叫抽象类访问修饰符 abstract 类名{}2.用abstract关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符 abstr ...
最新文章
- asp.net实现在网页上自动显示超链接以及Email地址
- OSChina 周六乱弹 —— 胖点其实挺好
- 一张膜能把电信运营商挡在手机支付门外吗?
- 手把手教你安装OpenStack——Ocata安装指南(上)
- 【2012年华为校园招聘软开上机-成都】字母转换、统计单词个数
- LeetCode 126. 单词接龙 II(图的BFS)
- 除了给予人权,欧洲议会还要让机器人纳税
- 【转】Netty那点事(一)概述
- VS2010安装MVC4记录
- HMM学习(2)-Generating Patterns
- 易进难出,“Vim 退出” 难住百万程序员
- 对抗训练fgm、fgsm和pgd原理和源码分析
- 小红帽免费酒店管理系统PMS
- 佳能打印机扫描文件到电脑显示设置计算机,电脑教程:佳能打印机怎么扫描文件到电脑...
- XCTF|PWN-string-WP
- 73个GitHub高级搜索技巧
- python程序30行_30行Python代码刷王者荣耀金币,还怕没有金币买英雄?
- QT项目负责人必须掌握的Ui设计师功能——Promote to !
- Unity基础之EasyAR
- STC12C5A60S2自主适应时钟延时函数
热门文章
- Firefox3与WEB客户端开发相关的新特性
- 对神经网络分类行为的认识二则
- python 多元线性回归_Python机器学习,多元线性回归分析问题
- java单例注册表_Spring对单例的底层实现,单例注册表
- kafka 不同分区文件存储_Kafka深入理解-1:Kafka高效的文件存储设计
- 使用iso升级_华佗品牌战略升级 彰显百年品质-产经要闻
- 【控制】二阶 UGV 的无穷时间状态输入性能最优解算
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第3章-有向二阶多智能体系统脉冲一致性
- Linux zip 加密压缩
- 【复习】服务器主板——Leez P710