java-如何从子类而不是超类获取数据字段?
作者:互联网
我有一个名为TestSuper的超类
public class TestSuper {
int a = 0;
}
我有两个名为TestSub和TestSub2的子类,它们扩展了TestSuper
public class TestSub extends TestSuper{
int a=1;
}
public class TestSub2 extends TestSuper{
int a=2;
}
在我的主类中,我创建了一个方法,该方法采用Type类型的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();
}
标签:polymorphism,inheritance,java 来源: https://codeday.me/bug/20191111/2020525.html