我有一个名为 TestSuper
的父类(super class)
public class TestSuper {
int a = 0;
}
我有 2 个名为 TestSub
和 TestSub2
的子类,它们扩展了 TestSuper
public class TestSub extends TestSuper{
int a=1;
}
public class TestSub2 extends TestSuper{
int a=2;
}
在我的主类中,我创建了一个接受类型 TestSuper
并返回它的值的方法,在主类中我将它显示在控制台上
public class Main {
public static void main(String[] args){
System.out.println(test(new TestSub())+" "+test(new TestSub2()));
}
public static int test(TestSuper b){
return b.a;
}
}
但是输出是“0 0”而不是“1 2”,我该怎么办?
最佳答案
你需要转换引用,所以说出你想要哪个。
public static int test(TestSuper b){
return b instanceof TestSub ? ((TestSub) b).a :
b instanceof TestSub2 ? ((TestSub2) b).a :
b.a;
}
如果这看起来不必要地复杂,那确实是。您应该改用多态性。
public class TestSuper {
int a = 0;
public int getA() { return a; }
}
public class TestSub extends TestSuper {
int a = 1;
public int getA() { return a; }
}
public class TestSub2 extends TestSuper {
int a = 2;
public int getA() { return a; }
}
public static int test(TestSuper b) {
return b.getA();
}
关于java - 如何从子类而不是父类(super class)获取数据字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43155821/