一、继承
1、继承:子类可以拥有父类中非私有化的所有内容,父类的就是子类的
2、继承的作用:提高代码的复用性
继承的好处:扩展性好,维护性好
-
父类:超类,基类
-
子类:派生类,扩展类
继承使用extends关键字:public class 子类 extends 父类{}
没有继承时设计类:
继承优化后的类:
3、代码实现:
4、继承使用extends关键字
5、继承是is-a的关系
public class Dog extends Pet{}
Dog是一个Pet
6、当父类和子类有同名属性时,this.属性的查找顺序是:先在子类中找,再到父类中找
7、如果想要在子类中调用到的是父类的属性,则用super.进行调用
8、在java中,所有的类都直接或间接的继承了Object类
9、在Java中,只支持单继承,一个类只能有一个直接父类
二、super关键字
(1)super代表父类
(2)super可以调用父类中的属性,方法,构造方法
(3)super调用构造方法时必须写在第一句
(4)super和this在调用构造方法时,不能同时出现
三、重写(overriding)
1、重写:父类中的方法不能满足子类的需求,就可以在子类中对父类的方法进行重新定义(覆盖),以满足需求
重写的前提:在继承关系中
在继承中,子类方法的声明和父类一致,访问修饰符和父类一样或比父类大,方法的实现(方法体)不一样
重写的特点:
-
(1)重写方法和被重写方法必须具有相同的方法名。
-
(2)重写方法和被重写方法必须具有相同的参数列表。
-
(3)重写方法的返回值类型和被重写的方法的返回值类型相同或是其子类。
-
(4)重写方法不能缩小被重写方法的访问权限。
四、抽象:抽象类、抽象方法
抽象可以理解为想象的,不会实现的东西
1、抽象用abstract修饰,可以修饰类和方法
2、抽象类不能实例化
3、抽象方法没有方法体,可以在子类中进行重写
4、抽象方法一定在抽象类中,抽象类中不一定都是抽象方法