我真的很困惑,而且我已经阅读了很多关于这个主题的问题,而且我无法明确指出一个接口可以做抽象类无法做到的事情。
答案 0 :(得分:9)
一个类可以实现多个接口,但它不能实现多个抽象类。
答案 1 :(得分:3)
界面本身无能为力。它只定义了提供某些功能的类和调用者之间的契约类型。
抽象类是定义为abstract
的类。如果类至少有一个抽象方法(即没有实现的方法),则必须将其定义为抽象方法。但抽象类也可以包含实现。
接口不能包含实现。只有抽象方法和常量(静态最终字段)。
Class可以实现多个接口,只扩展一个类(包括抽象类)。
我希望这会有所帮助。
答案 2 :(得分:2)
Abstract类也可以包含函数实现,而不仅仅是定义必须通过继承类实现的函数
答案 3 :(得分:1)
抽象类是部分实现的类,将由具体类(非抽象)扩展,以便实现。
实施例:
此示例并不意味着子类必须实现这些方法(在实现接口时会发生)。您可以声明一个子类抽象,稍后将通过另一个子子类来完成实现。 (例如:Boat可以有子类“SpeedBoat”和FisshingBoat,并且可以用不同的方式实现honk())
界面是外面世界的眼睛。可以在接口中声明哪些类可以执行,但是在类中实现。
一个类可以实现许多接口,但只能扩展一个类。 请参阅这个接口的小例子:
正如您所看到的,当我们使用接口时,我们可以拥有很大的灵活性。一些敌人可以做一些英雄也可以做的事情(DarkKnight可以投掷箭头)。 我希望您现在感受到抽象类和接口之间的区别。
请记住有关接口和抽象类的信息:
接口没有变量,只有非实现的方法(隐式抽象方法)
实现接口的类必须在其主体中具有接口的所有方法
一个类只能扩展一个类,但实现多个接口
如果某个类有抽象方法,则必须将其声明为抽象方法。
抽象类可以实现接口
接口可以扩展其他接口(多个接口)
我不知道如果我忘了什么,我希望这些信息有所帮助。
答案 4 :(得分:0)
抽象类可以是接口可以执行的所有操作。然而,反之亦然。
答案 5 :(得分:0)
抽象类可以包含抽象方法,抽象属性以及其他成员(就像普通类一样)。 接口只能包含抽象方法,属性但我们不需要放置abstract和public关键字。 Interface中定义的所有方法和属性默认为public和abstract。 我们可以看到抽象类包含私有成员,我们也可以将一些方法与实现一起使用。但是在接口的情况下只允许方法和属性
答案 6 :(得分:0)
接口和抽象类几乎都是相同的主要区别是使用接口我们无法定义方法的主体但是使用抽象类我们可以在抽象类内部或在实现它时定义方法的主体。 例如
Interface abc()
{
string xyz();
}
abstract abc()
{
string xyz()
{
// define body
}
}
or
abstract abc()
{
string xyz();
}
答案 7 :(得分:0)
抽象类是一个类 - 它定义了一类对象的某些行为的全部或部分实现,但是为具体的子类提供了一些扩展点。
接口是一种类型 - 它定义了由实现接口的任何类提供的操作集。
你几乎都在询问候选人是否可以做任何工作描述都无法做到的事情。创建一个抽象类说'这里是一个实现的模板'。创建一个界面说'我希望一个对象提供这些功能'。您可以在抽象类中使用虚方法来实现类型的某些方面,但目的是不同的。