Inheritance 界面和;仅具有抽象方法的抽象类
假设我们有一个方法声明很少的接口&类似的方法(在接口中声明)在抽象类中声明为抽象方法。这两种方法的作用与继承相同&在基类中强制实现所有方法。Inheritance 界面和;仅具有抽象方法的抽象类,inheritance,interface,abstract-class,abstract-methods,Inheritance,Interface,Abstract Class,Abstract Methods,假设我们有一个方法声明很少的接口&类似的方法(在接口中声明)在抽象类中声明为抽象方法。这两种方法的作用与继承相同&在基类中强制实现所有方法。 那么它们之间的主要区别是什么呢。采访中常见的问题。不同语言的差异是不同的 在Java中,可以从一个抽象类派生一个类,但/和可以从许多接口派生。在Java8中,接口也可以有默认方法,它们和抽象类之间的区别几乎是唯一的 在SmallTalk中根本不使用接口,因为所有类都可以作为接口工作 C++中的差异并不明显,你可以随意使用抽象类或接口。接口有一个抽象类的例子
那么它们之间的主要区别是什么呢。采访中常见的问题。不同语言的差异是不同的 在Java中,可以从一个抽象类派生一个类,但/和可以从许多接口派生。在Java8中,接口也可以有默认方法,它们和抽象类之间的区别几乎是唯一的 在SmallTalk中根本不使用接口,因为所有类都可以作为接口工作 C++中的差异并不明显,你可以随意使用抽象类或接口。接口有一个抽象类的例子
不要忘记,接口的出现是因为有两个父类的技术问题。你说的是理论。在抽象理论中,除了类之外不需要接口,您的问题就失去了意义。在真正的OOP语言中也是如此,比如SmallTalk。我认为这个问题与JAVA或C有关。在C++中,抽象类也称为接口。但让我们继续讨论接口类和抽象类之间的区别(比如说,在JAVA中):
但是,如果您想限制接口之间的继承,请将它们都声明为只包含抽象方法的抽象类,以便使用者只能从它们中的任何一个继承。具有所有抽象方法和接口的抽象类有两个主要区别
1. Multiple Inheritance. - Your class can inherit as more than one interface.
But this is not possible to inherit multiple class in c# because famous diamond problem.
2. Interface will help you to Dependency Injection Problem.
You can check DI problem here -
可能重复@marounnaroun它无论如何都不会重复,因为这里不是java问题!这是一个严格的java问题。这个问题在Java和Java之外有着完全不同的答案,它是w.r.t C#。我们可以通过使方法抽象化,使抽象类与接口工作相同,所以继承它的人必须实现该方法,那么有什么区别呢。它们是一样的吗?