【发布时间】:2017-04-01 10:44:17
【问题描述】:
我有一个名为TestSuper的超类
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”,我该怎么办?
【问题讨论】:
-
您只能覆盖子类中的方法。您不能覆盖字段。
-
只需在你的子类中添加一个契约
TestSub(){ a = 1;}
标签: java inheritance polymorphism