其他分享
首页 > 其他分享> > 区分子类方法中重名的三种变量与继承中成员方法的访问特点

区分子类方法中重名的三种变量与继承中成员方法的访问特点

作者:互联网

成员变量重名 如果子类父类中出现重名的成员变量,这时的访问是有影响的。代码如下:    
class Fu {
// Fu中的成员变量。
int num = 5;
}
class Zi extends Fu {
// Zi中的成员变量
int num = 6;
public void show() {
// 访问父类中的num
System.out.println("Fu num=" + num);
// 访问子类中的num
System.out.println("Zi num=" + num);
}
}
class ExtendsDemo03 {
public static void main(String[] args) {
// 创建子类对象
Zi z = new Zi();
// 调用子类中的show方法
z.show();
}
}
子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。 使用格式:
super.父类成员变量名
小贴士:Fu 类中的成员变量是非私有的,子类中可以直接访问。若Fu 类中的成员变量私有了,子类是不能 直接访问的。通常编码时,我们遵循封装的原则,使用private修饰成员变量,那么如何访问父类的私有成员 变量呢?对!可以在父类中提供公共的getXxx方法和setXxx方法。
/*
f*
在父子类的继承关系当中,创建子类对象,访问成员方法的规则:
创建的对象是谁,就优先用谁,如果没有则向上找。
注意事项;
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的。
重写( Override)
概念::在继承关系当中,方法的名称一样,参数列表也—样。
重写(Override)。方法的名称一样,参数列表【也一样】。覆盖、覆写。重载(OverLoad):方法的名称一样,参数列表【不一样】。
方法的覆盖重写特点:创建的是子类对象,则优先用子类方法
*/

public class demo01 {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.methoZi();
        zi.methodFu();

        zi.method();
    }
}

 

标签:变量,重名,子类,成员,num,三种,父类,方法,Zi
来源: https://www.cnblogs.com/x3449/p/16434163.html