继承
1、继承:
语法:修饰符 SubClass extends SuperClass{}
SubClass是子类 SuperClass是父类也可以叫基类或者超类
特点:单根性(单继承) 传递性
关系:is a
方式:1、编写父类(基类或者超类)
2、编写子类,继承父类(extends),写自己的属性和方法
2、子类可以继承父类那些资源:
1.继承public和protected 修饰的属性和方法,无论子类父类是否是同一个包
2.继承默认修饰符(friendly)的属性和方法, 但是子类和父类必须在一个包里
3.无法继承私有(private)修饰的属性和方法
父类的私有属性和方法子类是无法直接访问的。
当然私有属性可以通过public修饰的getter和setter方法访问到的,但是私有方法不行。
4.无法继承父类的构造方法,但是可以被访问
(通俗解释: 构造函数名必须与类名一致,子类构造函数当然不会和父类同名
但子类可以有与父类同名的普通函数)
3、super关键字:代表对当前对象的直接父类对象的默认引用
super必须出现在子类中,不是其他位置
可以访问父类的成员(属性 方法 构造方法)
注意访问权限的限制,如private修饰的成员无法访问
super.name 访问属性
super.print() 访问方法
super(name) 访问父类的构造方法
4、继承条件下构造方法的调用规则:
1.如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用本类的其他构造方法,默认先调用父类的无参构造方法
2.如果子类的构造方法中使用super调用父类的有参构造方法,那么将调用你使用的构造方法,不再执行父类的无参构造方法
3.如果在子类的构造方法中,使用this调用本类的其他构造方法,那么将调用你写的构造方法
4.构造方法的调用会一级一级向上调用,直到object类(为顶级父类)为止,如果没有使用extends关键词的话,那么这个类直接继承Object类
5、继承关系的初始化顺序:
(普通) 父类的属性→父类构造方法→子类的属性→子类的构造方法
(静态) 父类的静态属性→父类静态的代码块→子类的静态属性→子类的静态代码块→父类的属性→父类构造方法→子类的属性→子类的构造方法