编程语言
首页 > 编程语言> > java-如何从子类而不是超类获取数据字段?

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