我正在阅读"The Java Tutorial"(第二次).我刚刚完成了关于接口的部分(再次),但仍然不了解Java接口如何模拟多重继承.是否有比书中更清楚的解释?
我不问这个 - > 为什么Java中没有多重继承,但允许实现多个接口?
在Java中,不允许多重继承,但是,在Java 8之后,Interfaces可以拥有默认方法(可以自己实现方法),就像抽象类一样.在此上下文中,还应允许多重继承.
interface TestInterface
{
// abstract method
public void square(int a);
// default method
default void show()
{
System.out.println("Default Method Executed");
}
}
Run Code Online (Sandbox Code Playgroud) 在采访中我被问到以下问题.我试着回答这个问题,但我想要问题的确切答案.
如果我可以将Abstract类模拟为Interface,为什么java提供了Interface?
这意味着如果在Abstract类中我可以将所有方法标记为抽象,然后抽象类将作为接口工作,那么为什么我需要接口.
任何人都可以简要解释一下.
可能重复:
为什么Java中没有多重继承,但允许实现多个接口
为什么Java允许从接口进行多重继承,而不是从抽象或具体类继承
可能重复:
为什么Java中没有多重继承,但允许实现多个接口
大家好,我是java的新手,当我尝试在java中使用多继承概念时,它显示编译时错误.为什么java不支持它.我听说过关键字但是不知道为什么java直接支持它.请帮我解释一下.
在C++中,您可以扩展许多类,那么这个Java设计的优点是什么类只能扩展一个类?由于接口是一种纯类(实际上是抽象类),为什么不像类扩展一样限制接口的实现数量呢?
我正在使用Swing为我的高中编程类创建一个令人难以置信的原始二十一点游戏,因此,我的所有资源类都扩展了JPanel.我创建了以下资源类:
我的问题是我想创建一些像我这样的公共整数
public int DealerTotal, ClubsTotal, SpadesTotal, HeartsTotal;
Run Code Online (Sandbox Code Playgroud)
我想这样做,所以我可以追踪每个人的价值观,并确定赢家和输家.我有一个灯泡响了,并认为让Dealerbox成为Clubs,Spades和Hearts的超级类是我所有麻烦的解决方案,因为我可以让超类中的简单代码获取上述整数的值并执行我需要的所有检查.
所以我为我的一个子类写了这个:
public class ClubsBox extends JPanel, DealerBox implements Runnable
{
//fun code
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是我不断收到错误.我认为它与将ClubsBox列为JPanel和DealerBox的子类有关.所以我stackoverflowed我的问题,并找到一个答案,声明一个人不能有一个有2个超类的类.对类似问题的另一个答案是,一个COULD有一个有两个超类的类.
现在我们来看一个主要问题:是否有可能拥有一个有两个超类的类?如果是这样,我该如何编码呢?如果没有,是否有办法绕过限制?
编辑:2014年4月21日,原始邮寄后44分钟
我有一个新问题.我使用了每个人都建议的方法,即让DealerBox扩展JPanel然后让其他所有东西扩展DealerBox.我的GUI来自于:

对此:
底部显然非常难以搞砸.不知何故,来自其他地区的标签最终被复制,并且东西混杂在一起.如果您需要代码让我知道,但我需要认真帮助解决这个问题.
请记住,继承树看起来像这样:

我非常清楚它可以在界面的帮助下完成,而且我已经多次完成了.但这次我的情况有很大不同.我有class A,class B我需要创建另一个class C扩展A和B,因为C应该具有两个功能,并且还注意A和B不是相互关联的,所以即使我不能说A可以扩展class B.
我现在应该怎么做才很困惑.我知道我们不能改变java ...但至少会有一些方法可能.即使是最近的也可以......请帮帮我.
添加更多细节: - Class B是标准API,class A而是需要由所有异常类继承的常见异常类.
相关问题:
可能重复:
为什么Java中没有多重继承,但允许实现多个接口
到目前为止,我所看到的关于"为什么Java没有多重继承"的每个答案只有一个答案,更具体或更详细的方式是"降低复杂性",但没有人定义它如何降低复杂性,如果我们使用接口而不是类什么它有所不同.这不是一回事吗?如果我们实现一个接口而不扩展我们的类有什么区别?有人回答了Diamond问题,但接口也会产生钻石问题.
public interface A {
class Aclass {
int constants = 100;
public void display()
{
System.out.println("Inside A");
}
}
public void display();
}
public interface B {
class Bclass {
int constants = 130;
public void display() {
System.out.println("Inside B");
}
}
public void display();
}
public class MultipleInheritance implements A, B {
@Override
public void display() {
A.Aclass a = new A.Aclass();
System.out.println(a.constants);
B.Bclass b = new B.Bclass();
System.out.println(b.constants);
}
public static void main(String args[]) {
new MultipleInheritance().display();
} …Run Code Online (Sandbox Code Playgroud) java ×11
interface ×4
inheritance ×3
java-8 ×2
abstract ×1
class ×1
oop ×1
subclass ×1
superclass ×1
swing ×1