java学习随记5——继承
重名问题
在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式:
- 直接通过子类对象访问成员变量:
等号左边是谁,就优先用谁,没有则向上找。 - 间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁,没有则向上找。
在父子类的继承关系中,访问成员方法的规则:
创建(new)的对象是谁,就优先用谁,如果没有则向上找。
继承关系中,父子类构造方法的访问特点:
- 子类一定先调用父类的构造方法,然后执行子类的构造方法;
- 可以通过super关键字来子类构造调用父类重载构造;
- super的父类构造调用必须是子类构造方法的第一个语句。
重写和重载的区别
重写(Override):方法的名称一样,参数列表也一样;
重载(Overload):方法的名词一样,参数列表不一样。
注:
- 为了检测是不是有效的正确重写方法,应该在重写方法前面加上“@Overrider”。
- 子类方法的返回值必须小于或等于父类方法的返回值。
- 子类方法的权限必须大于或等于父类方法的权限修饰符,其中public > protected > ( default ) > private。
- 对于重写方法,如果希望保留父类方法的基础上新增代码,可以加上一行:super.父类方法()。