在Java中欺骗单一继承?

Omn*_*ent 8 java oop inheritance

我听说有一种方法可以欺骗单继承并在Java中实现多重继承.有谁知道如何实现这个(没有使用接口)?

只是出于好奇;-)

Mic*_*nai 20

当然可以,但这很棘手,你应该考虑这是否是你想要的方式.
我们的想法是使用基于范围的继承与基于类型的继承相结合.对于内部目的而言,内部类"继承"外部类的方法和字段,这就是类型说话.它有点像mixins,其中外部类混合到内部类中,但不安全,因为您可以更改外部类的状态以及使用其方法.
Gilad Bracha(主要的java语言设计师之一)写了一篇论文讨论那个.因此,假设您想要在一些不相关的类之间共享一些内部使用的方法(例如,对于字符串操作),您可以创建它们的子类作为具有所有所需方法的类的内部类,并且子类可以使用来自超级类和外部类的方法.

无论如何,对于复杂的类来说这很棘手,你可以使用静态导入(从java 5开始)获得大部分功能.对于求职面试和酒吧测验的好问题,但是;-)


War*_*ior 5

Java不支持Single Multiple继承,相反,它具有实现相同目的的接口。如果您坚持使用多重继承,则应在C ++中完成。