考虑以下非法代码:-
class WrongCode{
int i;
static int i;
}
在这里,编译器说我们在同一个类中有重复的字段。
现在,考虑同一文件中的以下类。
class Parent{
int i = 10;
}
class Child extends Parent{
static int i = 100;
}
public class Main{
public static void main(String ... aaa){
Parent ob = new Child();
System.out.println(ob.i); // This prints Parent's i
}
}
既然实际对象是Child,那么ob不应该引用Child的i吗?如果它引用父级的“i”,那么在某种程度上,它也在自己的类中拥有父级的“i”以及它自己的静态“i”,这是不允许的。
子静态 i 掩盖父 i。而且Parent的i不是静态的,那么如何直接使用instance而不是className来访问它呢?
最佳答案
您在 Parent
类中有实例字段 i
,并且它仍然是 Child
类中的实例字段。
System.out.println(ob.i); // must be 10
关于java - 我不明白这个继承功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8754318/