Java不允许多重继承,但它允许实现多个接口.为什么?
我知道Java和C#中不允许多重继承.很多书只是说,不允许多重继承.但它可以通过使用接口来实现.没有讨论为什么不允许它.任何人都可以告诉我为什么不允许它?
我创建了两个bean
class BackPageBean{
String backPage = null;
:
:
:
}
class InformationMessageBean{
String informationMessage = null;
:
:
:
}
Run Code Online (Sandbox Code Playgroud)
现在,如果一个类是反向识别的,那么它将扩展backPageBean,或者如果它需要显示某种消息,那么它会扩展InformationMessageBean.
class BackPageAware extends backPageBean{
}
class InfoMessAware extends InformationMessageBean{
}
someFunction () {
if ( theObject instanceOf backPageBean ) {
prepareTheBackPage ( theObject.getBackPage() );
}
if ( theObject instanceOf InformationMessageBean ) {
showtheInformation ( theObject.getMessage() );
}
}
Run Code Online (Sandbox Code Playgroud)
现在问题是,如果我想要一个既是BackPageAware又是InformationAware的bean,因为我们没有多重继承,那么应该采用什么方法呢?
Java不允许从多个类继承(仍允许从多个接口继承.),我知道它非常符合经典的钻石问题.但是我的问题是,当从多个基类继承时没有歧义(因此没有钻石问题的可能性)时,java不允许像C++这样的多重继承?
可能重复:
为什么Java中没有多重继承,但允许实现多个接口
为什么Java允许从接口进行多重继承,而不是从抽象或具体类继承