区分子类方法中重名的三种变量与继承中成员方法的访问特点
成员变量重名
如果子类父类中出现重名的成员变量,这时的访问是有影响的。代码如下:
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* 在父子类的继承关系当中,创建子类对象,访问成员方法的规则: 创建的对象是谁,就优先用谁,如果没有则向上找。 注意事项; 无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的。 public class demo01 { public static void main(String[] args) { Zi zi = new Zi(); zi.methoZi(); zi.methodFu(); zi.method(); } }