Java 如何通过Super关键字获取变量的值?
我有三个类Java 如何通过Super关键字获取变量的值?,java,super,Java,Super,我有三个类A,B,CB类扩展A类,C类扩展B类 我想获得class a中存在的整数a的值,并在class C中打印该值。我的第一个选择是通过super关键字打印 package testee; import java.util.Scanner; public class Testee { public static void main(String[] args) { new C(); } } class A{ int a=10;
A
,B
,C
B类扩展A类,C类扩展B类
我想获得class a
中存在的整数a
的值,并在class C
中打印该值。我的第一个选择是通过super
关键字打印
package testee;
import java.util.Scanner;
public class Testee {
public static void main(String[] args) {
new C();
}
}
class A{
int a=10;
A(){
System.out.println(a);
}
}
class B extends A{
int a=13;
B(){
System.out.println(a);
}
}
class C extends B{
int a=21;
C(){
System.out.println(super.a);
}
}
在继承层次结构中多次使用同名字段称为“隐藏字段”
对字段(和静态方法)的访问基于所用引用的(静态)类型。这意味着,如果您将引用(这里是)转换为您想要的类型(在这种情况下是A)并访问字段,那么您将得到属于A的字段
如果将C赋值给变量,也会以同样的方式工作。如果变量类型为A,则会得到A.A
无论如何:请不要在生产代码中使用隐藏字段非常感谢您的帮助…但我无法理解此代码…请给我写下。。。
System.out.println(((A)this).a);