为了账号安全,请及时绑定邮箱和手机立即绑定

多重继承的泥潭——实例化了哪个类?

多重继承的泥潭——实例化了哪个类?

FFIVE 2021-08-04 17:29:44
假设我有以下课程:abstract class A {    static abstract class _Foo {}}class B extends A {    static void doSomething() {        System.out.println(C.saySomething());    }    static _Foo getInner() {        return new C._Foo();    }    static abstract class _Foo extends A._Foo {}}final class C extends D {    static String saySomething() {        return "Something";    }}abstract class D {    static class _Foo extends B._Foo {        public int value() {            return 42;        }    }}提供一些上下文:所有这些类都驻留在同一个包中。类C和D在编译时生成类A以及C永远不会被实例化;他们只是为类提供一些行为B类B是唯一实际使用的类。类D在编译时之前是未知的,这就是为什么我们只使用Cin B。这类似于人们在使用时可能期望的 google autovalue我的问题是关于中的getInner功能B:哪个_Foo将在该行实例化return new C._Foo();?在_Foo中D或一个在A?这种未定义的行为是否被实例化或是否被记录?如果可能,请提供文件顺序是如何确定的?最后一个问题仅供参考,我最感兴趣的是前两个。谢谢你的帮助。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信