1 抽象类
1.1 什么是抽象类?
-
类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类
-
类到对象是实例化,对象到类是抽象
-
抽象类的***注意点***:
- 类本身是不存在的,所以抽象类无法创建对象(无法实例化),所以抽象类是用来被子类继承的,子类可以实例化对象
- final和abstract是非法的修饰符组合,是对立的,不能联合使用
- 抽象类的子类可以是抽象类
- 抽象类虽然无法实例化,但有构造方法,构造方法是供子类使用的
- 如果抽象类显式定义了有参构造,那么子类就无法编译通过,因为子类的super()无法调用父类的无参构造(父类已经有了有参构造)
- 抽象方法:表示没有实现的方法,没有方法体的方法
- 特点1:没有方法体,以分号结尾
- 特点2:修饰符列表里有abstract
public abstract void doSome();
- 抽象类中不一定有抽象方法,但是抽象方法一定存在于抽象类中
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZjZp1JL7-1602859586751)(C:\Users\Yupeng\AppData\Roaming\Typora\typora-user-images\image-20200920115716167.png)]
(图片转自视频教程,https://www.bilibili.com/video/BV1mE411x7Wt?p=17)
1.2 抽象类是什么类型?
抽象类属于引用数据类型
1.3 抽象类的定义
语法:在class前添加abstract关键字
[修饰符列表] abstract class 类名{
// 类体;
}
1.4 抽象类的使用
重要结论:如果一个非抽象类要继承抽象类,必须将抽象类中的抽象方法进行实现(重写)。
// Animal类是抽象类
abstract class Animal{
public abstract void move();
}
// Bird类不是抽象类,且继承Animal抽象类,则必须将抽象类中的抽象方法实现(重写)
class Bird extends Animal{
public void move(