为什么更改类型会导致成员的不同用法?
2022-09-03 05:35:17
因此,当我遇到这种奇怪的现象时,我正在用一些代码片段进行测试,以围绕继承的概念。
所以首先我测试了这个简单的代码:
public class Main{
public static void main(String[] args) {
Bar bar = new Bar();
System.out.println("age = " + bar.age);
bar.test();
}
}
class Foo{
int age = 2;
void test(){
System.out.println("TEST FOO");
}
}
class Bar extends Foo{
int age = 4;
void test(){
System.out.println("TEST BAR");
}
}
输出正如我预期的那样:
age = 4
TEST BAR
然后我对第3行进行了一些小的更改,其中我将类型更改为如下所示:Bar
Foo
Foo bar = new Bar();
现在,当我运行代码时,它给了我一个我认为很奇怪的输出:
age = 2
TEST BAR
代码现在使用类的成员(这是有道理的),同时仍然使用类的方法(而不是来自Foo,因为这是类型是什么)是怎么发生的?bar.age
age
Foo
bar.test();
Bar