Contents
7.2. 成员变量隐藏和方法覆盖¶
7.2.1. 成员变量隐藏¶
子类成员变量与父类成员变量设置一致,会覆盖父类的成员变量,称为“成员变量隐藏”
ParentClass.java
package a51work6;
public class ParentClass {
// 成员变量
int x =10;
}
class SubClass extends ParentClass{
// 子类继承父类
// 覆盖父类的成员变量x
int x =20;
public void print() {
// 访问子类对象x成员变量
System.out.println("x = " + x);
// 访问父类对象x成员变量
System.out.println("super.x = " + super.x);
}
}
调用代码 helloword4.java
package a51work6;
public class helloword4 {
public static void main(String[] args) {
// 实例化子类SubClass
SubClass pObj = new SubClass();
// 调用子类的print方法
pObj.print();
}
}
7.2.2. 方法覆盖¶
ParentClass.java 类,有一个setvalue()方法.方法中x的值为10
package a51work6;
public class ParentClass {
// 成员变量
int x;
protected void setvalue() {
x = 10;
}
}
class SubClass extends ParentClass{
// 子类继承父类
// 屏蔽父类x成员变量
int x;
@Override
public void setvalue() {
// 访问子类对象x成员变量
x = 30;
// 调用父类的setvalue()方法
super.setvalue();
}
public void print() {
// 访问子类对象x成员变量
System.out.println("x = " + x);
// 访问父类对象x成员变量
System.out.println("super.x = " + super.x);
}
}
调用代码 helloword4.java 先调用setvalue()方法,然后调用子类的print()方法
package a51work6;
public class helloword4 {
public static void main(String[] args) {
// 实例化子类SubClass
SubClass pObj = new SubClass();
// 调用setvalue()方法
pObj.setvalue();
// 调用子类的print方法
pObj.print();
}
}
输出结果
x = 30
super.x = 10