相关疑难解决方法(0)

为什么Java或C#中不允许多重继承?

我知道Java和C#中不允许多重继承.很多书只是说,不允许多重继承.但它可以通过使用接口来实现.没有讨论为什么不允许它.任何人都可以告诉我为什么不允许它?

c# java language-design multiple-inheritance

108
推荐指数
9
解决办法
7万
查看次数

Java 8中的抽象类和接口有什么区别?

在Java中,抽象类和接口之间曾经存在微妙但重要的区别:默认实现.抽象类可以拥有它们,接口却不能.Java 8虽然引入了接口的默认实现,但这意味着这不再是接口和抽象类之间的关键区别.

那是什么?

尽我所知,唯一剩下的差异(除了可能是引擎效率之外的东西)是抽象类遵循传统的Java单继承,而接口可以有多重继承(或者如果你愿意,可以有多个实现).这引出了另一个问题 -

新的Java 8接口如何避免钻石问题

java abstract-class interface diamond-problem java-8

64
推荐指数
4
解决办法
2万
查看次数

Java 8的新默认界面模型如何工作(包括菱形,多重继承和优先级)?

这个新的界面模型是如何工作的以及它是什么

  • 由此产生的钻石问题
  • 此实现的多重继承特性
  • 以及使用接口实现的优先级?

java java-8

55
推荐指数
2
解决办法
2万
查看次数

Java接口上的多重继承

我认为多重继承在Java中总是非法的,但是这段代码编译:

public interface A {
  void a();
}

public interface B {
  void b();
}

public interface AB extends A, B {
}
Run Code Online (Sandbox Code Playgroud)

有一个空的界面,如AB被认为是一个坏的做法?有没有办法在避免空接口(使用泛型或其他方式)的同时实现类似的东西?

注意:我不是在问如何通过接口模拟多重继承.我意识到我可以做到以下几点:

public class AbImpl implements A, B {
  public void a() {}
  public void b() {}
}
Run Code Online (Sandbox Code Playgroud)

由于各种原因,我需要一个具有两种方法的接口.

java multiple-inheritance

28
推荐指数
3
解决办法
4万
查看次数