首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么更改类型会导致成员的用法不同?

为什么更改类型会导致成员的用法不同?
EN

Stack Overflow用户
提问于 2017-12-05 19:46:43
回答 1查看 1.1K关注 0票数 16

所以我正在测试一些代码片段,以便理解继承的概念,这时我遇到了这个-对我来说-奇怪的现象。

所以首先我测试了这个简单的代码:

代码语言:javascript
复制
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");
    }
}

输出结果和我预期的一样:

代码语言:javascript
复制
age = 4
TEST BAR

然后我对第3行做了一个小改动,将类型Bar改为Foo,如下所示:

代码语言:javascript
复制
Foo bar = new Bar();

现在,当我运行代码时,它给出了一个我认为很奇怪的输出:

代码语言:javascript
复制
age = 2
TEST BAR

为什么代码bar.age现在正在使用Foo类的age成员(这是有意义的),而bar.test();仍然使用Bar类的方法(而不是来自Foo,因为这是该类型)?

EN

回答 1

Stack Overflow用户

发布于 2017-12-05 19:50:31

因为您已经定义了两个不同的age字段,每个类一个。字段不会被覆盖。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47652893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档