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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值