1. 成员变量的访问特点:
简单四个字:" 就近原则" (似乎在学习this时听过)
1.先在局部位置查找,再到本类成员位置查找,再到父类成员位置查找。示意访问顺序为 局部 > 成员变量(本类)>成员变量(父类)
2.如果出现父子成员变量重名的情况:Java会自动隐藏父类的成员变量。
3.添加了this关键字后,会指向子类成员变量,若无,则前往父类中查找
4.添加了super关键字后,会直接指向父类的成员变量
具体实现于以下代码:
// 父类
public class FU {
String name="Fu";
}
//子类
class Zi extends FU{
String name="zi";
public void ziShow(){
String name= "ziShow"; //若注释掉这里的局部变量打印的是子类里面的成员变量name
System.out.println(name); //调用局部变量
System.out.println(this.name); //调用成员变量
System.out.println(super.name); //调用父类成员变量
}
}
//测试类
class Test{
public static void main(String[] args) {
Zi z1=new Zi();
z1.ziShow();//ziShow
}
控制台:
ziShow
zi
Fu
2. 成员方法访问特点
直接调用采用就近原则,利用super修饰则直接去父类中找成员方法
3. 方法的重写
顾名思义,父类的方法在子类中重写一遍:
为什么要重写?
当父类的方法不能满足子类特殊的需求时,则需要方法的重写。
a. 书写的格式
在继承体系中,子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法。
b. @Override重写注释
1.@Override是放在重写后的方法上,可校验子类重写时语法是否正确。
2.建议重写方法时加上@Override注解,是代码安全,优雅!
c. 方法重写的本质
本质是覆盖了虚方法表中原有的方法
d. 方法重写时注意的事项和要求
1.重写方法的名称、形参类列表必须和父类中的一致
2.子类重写父类方法时,权限修饰符必须大于等于父类
3.子类重写父类方法时,返回值必须小于等于父类
4.建议:重写的方法尽量和父类保持一致
5.只有被添加到虚方法中的方法才能被重写(构造方法不可被重写)
e. idea中generate小技巧
Alt+Insert ---->Over Methods,一键生成重写方法
4. 重写和重载的区别
重写:父子类
重载:同一个类
[重写的设计原则]
对于已经投入使用的类,我们要做到尽量不去进行修改。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅可以显示号码,还可以显示头像,地区等。在这个过程中,我们不应该在原来的老的类上进行修改,因为原来的类可能还有用户在使用,直接修改会影响到这些用户的使用效果,正确做法应该是新建一个手机的类,对来电显示这个方法重写就好了,这样就达到了我们当今的需求