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. 方法重写的本质

本质是覆盖了虚方法表中原有的方法

继承中:成员变量和成员方法的访问特点_父类_02


d. 方法重写时注意的事项和要求

1.重写方法的名称、形参类列表必须和父类中的一致

2.子类重写父类方法时,权限修饰符必须大于等于父类

3.子类重写父类方法时,返回值必须小于等于父类

4.建议:重写的方法尽量和父类保持一致

5.只有被添加到虚方法中的方法才能被重写(构造方法不可被重写)


e. idea中generate小技巧


Alt+Insert ---->Over Methods,一键生成重写方法


4. 重写和重载的区别

重写:父子类

重载:同一个类

继承中:成员变量和成员方法的访问特点_子类_03


[重写的设计原则]

对于已经投入使用的类,我们要做到尽量不去进行修改。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅可以显示号码,还可以显示头像,地区等。在这个过程中,我们不应该在原来的老的类上进行修改,因为原来的类可能还有用户在使用,直接修改会影响到这些用户的使用效果,正确做法应该是新建一个手机的类,对来电显示这个方法重写就好了,这样就达到了我们当今的需求

继承中:成员变量和成员方法的访问特点_父类_04