首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中的多层次继承

Java中的多层次继承
EN

Stack Overflow用户
提问于 2015-11-02 19:24:46
回答 5查看 193关注 0票数 0

我最近遇到了一个关于java多级继承的问题,问题如下:

代码语言:javascript
运行
复制
 public class Test{

        public static void main(String[] args) {
            A c = new C();
            c.print();
        }

    }
    class A{
        public void print(){
            System.out.println("Inside A");
        }
    }

    class B extends A{
        @Override
        public void print(){
            System.out.println("Inside B");
        }
    }
    class C extends B{

    }

所以我的问题是为什么这是打印为“在B"。因为C类没有覆盖方法print(),因此它应该基于编译时解析方法,因此应该将打印为“is”。如果我遗漏了什么请告诉我。谢谢你的帮助。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-11-02 19:26:13

C扩展了B,这意味着它将具有与B相同的方法,而且这个例子B已经重写了该方法,因此C也会有它。

票数 5
EN

Stack Overflow用户

发布于 2015-11-02 19:26:04

因为这是C正在扩展的类,所以B是C的超类。

票数 1
EN

Stack Overflow用户

发布于 2015-11-02 19:31:17

你混淆了两件事。

如果方法被重写一次或多次,则将运行最特定子类中的版本。这就是为什么在B中使用的版本。

另一方面,在重载方法之间进行选择时,决策是基于参数的编译时间类型。

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

https://stackoverflow.com/questions/33485286

复制
相关文章

相似问题

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