一 设计规则:
1)将派生类共有的属性和行为,抽到超类中--------------抽共性
2)派生类的行为都一样,设计为普通方法
派生类的行为都不一样,设计为抽象方法
3)
二 抽象方法:
1)由abstract修饰
2)只有方法的定义,没有具体的实现(连{}都没有)
三 抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类
【面向对象|面向对象 抽象方法、抽象类】不包含抽象方法的类也可以声明为抽象类----------我乐意
3)抽象类不能被实例化(单独存在没有意义)
FlyingObject o;
//正确,声明了一个FlyingObject类型的引用onew FlyingObject();
//编译错误,new一个FlyingObject对象(实例化)FlyingObject[] oo = new FlyingObject[3];
//正确,创建FlyingObject数组对象new FlyingObject();
//创建FlyingObject对象(实例化)new FlyingObject[3];
//创建FlyingObject数组对象
4)抽象类是需要被继承的,派生类:
4.1)重写抽象类中的所有抽象方法----------建议
4.2)也声明为抽象类-----------------------------一般不用
abstract class FlyingObject{
abstract void step();
}class Airplane extends FlyingObject{
void step(){//重写这个抽象方法---变不完整为完整}
}
5)抽象类的意义:
5.1)封装共有的属性和行为----------------实现代码复用
5.2)为所有派生类提供统一的类型------向上造型
5.3)可以包含抽象方法,为所有派生类提供统一的入口,
派生类的具体实现不同,但入口是一致的
推荐阅读
- Java基础|Java基础.Java编译过程
- java|Java学习路线图(完整详细2021版)
- 面试题|Java基础知识面试题
- spring|Spring Boot技术入门书《Spring Boot应用开发实战》
- 自学Java半年的心路历程
- 我要进大厂|0 基础 Java 自学之路(2021年最新版)
- 手下两个应届生(一个踏实喜欢加班,一个技术强挑活,怎么选(?))
- 高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
- Java中java.util.Arrays参考指南