Java基础复习:abstract关键字&抽象类&模版模式
来源:互联网 发布:统计数据库 编辑:程序博客网 时间:2024/05/24 15:37
练习:求不同图形的周长,包括圆和矩形
package day3;/** * 抽象基类:图形 * @author well * */abstract class Graph{/** * 求图形的周长 * @return 图形的周长 */public abstract double getCircumference();}/** * 圆形 * @author well * */class Circle extends Graph{private double r;//半径public Circle(double r) {super();this.r = r;}@Overridepublic double getCircumference() {return 2*r*Math.PI;}}/** * 矩形 * @author well * */class Rectangle extends Graph{private double length;private double width;public Rectangle(double length, double width) {super();this.length = length;this.width = width;}@Overridepublic double getCircumference() {return 2*(length + width);}}/** * 题目:定义抽象类,求不同图形的周长 * @author well * */public class AbstractDemo {public static void main(String[] args) {Circle c = new Circle(2);double cc = c.getCircumference();System.out.println(cc);//12.566370614359172Rectangle r = new Rectangle(2, 3);double rr = r.getCircumference();System.out.println(rr);//10.0}}
使用abstract修饰的方法,没有方法体(没有{}),只有方法声明,抽象方法强制子类覆写
一旦一个类有了抽象方法,那么该类也必须声明为抽象类;但是抽象类可以没有抽象方法;
抽象类不能实例化,不能创建对象(抽象类就是用来继承的,相当于顶一个方法模版,让子类具体实现方法)
抽象类的体现:模版模式
抽象类是多个具体子类抽象出来的父类,具有高层次的抽象性;以该抽象类作为子类的模板可以避免子类设计的随意性;
抽象类的体现主要就是模板模式设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行拓展,但是子类在总体上大致保留抽象类的行为方式;
编写一个抽象父类,该父类提供了多个子类的通用方法,并把一个或多个抽象方法留给子类去实现,这就是模板设计模式;
/** * 抽象基类:图形 * @author well * */abstract class Graph{/** * 求图形的周长 * @return 图形的周长 */public abstract double getCircumference();/** * 求图形的面积 * @return 图形的面积 */public abstract double getAera();}
- Java基础复习:abstract关键字&抽象类&模版模式
- java抽象类 abstract关键字
- java 抽象 abstract关键字
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类
- java中的抽象类abstract关键字
- Java之抽象类(abstract关键字)
- Java 抽象类(abstract关键字)
- java基础(九)关键字final/多态/抽象类/关键字abstract/接口
- abstract 关键字---抽象类
- Java之抽象abstract关键字
- Review-Java基础--抽象类(abstract)
- Java中 关键字final,抽象类abstract, 接口interface ,多态
- abstract关键字--Java基础053
- Java基础之abstract关键字
- Java抽象类abstract
- java abstract抽象类
- Java--抽象类(abstract)
- java-abstract(抽象类)
- 使用EXP命令实现逻辑备份实验
- 八大地图API开发平台大比拼
- Effective C++ 学习笔记
- 函数指针与函数指针数组的定义与使用
- Linux设备驱动程序学习(5)-高级字符驱动程序操作〔(2)阻塞型I/O和休眠〕
- Java基础复习:abstract关键字&抽象类&模版模式
- how to debug buffer overrun
- UVa 11205 - The broken pedometer
- woj 1078 并查集 hash
- 【C语言】二分查找递归算法
- WebView 与 JS 之间的关系
- 蜂窝电话
- 谷歌高管给初入职场者的忠告
- Kruskal算法