继承
1.概念:子类拥有父类的属性和方法,具有父类的特征。
2.继承的实现:
①关键字:extends
②格式:class 子类 extends 父类{}
③父类:superclass 超类
④子类:subclass 子类
注意:一般可以写继承关系的,要求本质上都是同一类事物。
3.继承的好处:提高代码的复用性,提高代码的动态性。
4.继承的特点:
①单继承:extends关键字后面只能有一个父类,继承的直系父类只有一个。
②多继承:可以理解爷爷→父亲→孙子
5.继承的细节问题:
①对于父类和子类重名时,由于就近原则。如果是子类调用该属性,则使用子类属性。
②若想使用父类的同名属性:
①关键字:super指代当前父类的对象部分。
②用法同this,格式→super.属性名
③无论this还是super,都不能直接在静态方法中使用。
6.继承的成员:
继承的成员都可以继承,除一下两种:
①成员用private修饰的
②构造方法不能被继承
7.方法的重写:
①方法的重载:overload在同一个类中,方法名相同,返回值无关,参数不同(个数,顺序,类型)。
②方法重写的原因:父类的方法不适合子类使用。
③方法的重写:override在具有继承关系的子类中,如果父类的方法不满足子类的需求,
子类重写父类的方法。
注意:方法名相同,参数列表相同,目前返回值类型也相同(多态之前可以认为),
权限修饰符大于等于父类
④如果子类想要调用父类的同名方法,需要通过super调用。格式→super.方法名(参数)
⑤方法重写的校验:
①注解@override检查
②可以通过如图校验
8.方法的重写:
注意:
①重写要求必须是子父之间,在子类中重写。
②静态方法不能被重写。
③可以重写的方法都是非静态方法,通过静态方法调用,多为动态准备。
9.super与this的用法
①this/super代指对象:
this表示当前类的当前对象。
super表示当前类的当前对象,属于父类对象部分的引用。
②注意:this和super可以想象在子类对象中,一但具有继承关系,就相当于子类对象创建
时,有两部分组成,一部分属于继承父类的super,另一部分属于子类特有的属于
this。当查找时this从本类开始查找,遇到第一个为止,super从父类开始查找,遇到
第一个为止。
③this和super代指构造方法:
this:代表本类的构造方法。
super:代表父类的构造方法。
注意:
①如果一个子类的构造方法没有显示调用父类的构造方法,默认会有一个super(),
默认父类的无参构造方法被调用。这种现象被称为隐式三步第一步。
②如果父类的构造方法中存在有参构造,没有无参构造,建议创建无参构造。
原因:子类在进行构造方法声明时,会在第一行默认调用父类的无参构造fang(),
如果父类没有,就报错误。
解决:
①建议添加无参构造
②也可以在构造方法的第一行,指定调用父类那个构造方法(不建议使用)
总结:this/super的用法:
①代指对象:格式→this/super 方法(参数)/属性
②代指构造方法:格式→this/super(参数)