JAVA如何调用父类中的与子类重名的成员变量
【简单的例子】
父类animal
public class animal {
public static int age =1;
public String name="alasijia";
public void eat() {
System.out.println("动物具有吃东西的能力!");
}}
子类dog
public class dog extends animal {
int age =10;
}
main
public class hei {
public static void main(String[] args) {
dog i = new dog();
i.eat();
System.out.println("age="+dog.age);
}
}
Result
因为只有静态变量
才能直接用类名称.成员变量
的形式
例子1(会报错!!!)当重名时 不能用类名称越级调用父类
区别:父类的age成员变量前有static
,子类有age成员变量,主函数中按照(类名称)dog.(成员变量)age
的形式调用
父类static age=1;子类age=10;
结果: 报错:java: 无法从静态上下文中引用非静态 变量 age
(类名称)animal.(成员变量)age
才可以
例子2
区别:父类的age成员变量前有static
,子类有age成员变量,主函数中按照对象.成员变量
的形式调用
父类static age=1;子类age=10;
结果: age=10 // 用对象时,先访问子类,若有直接拿
例子3
区别:父类的age成员变量前有static
,子类无age成员变量,主函数中按照(类名称)dog.(成员变量)age
的形式调用
父类static age=1;
结果: age=1 // 当使用类名称时直接访问静态变量
(类名称)animal.(成员变量)age
也可以
例子4
区别:父类的age成员变量前有static
,子类无age成员变量,主函数中按照对象.成员变量
的形式调用
父类static age=1;
结果: age=1 //用对象时,子类没有则向上寻找,在父类中找到
例子5
区别:父类的age成员变量前无static
,子类有age成员变量,主函数中按照对象.成员变量
的形式调用
父类age=1;子类age=10;
结果: age=10 // 用对象时,先访问子类,若有直接拿
例子6
区别:父类的age成员变量前无static
,子类无age成员变量,主函数中按照对象.成员变量
的形式调用
父类age=1;子类age=10;
结果: age=1 // 用对象时,子类没有则向上寻找,在父类中找到
对于例子1还有一种可以调用父类age的方法
Animal q1 = new Dog();
q1.age
结果为age = 1;