抽象类的局限性在于,子类只能扩展单个抽象类。因此,可以在接口中找到多重继承。
接口可以像抽象类一样具有具体的方法,但是不能具有实例字段,只能具有公共,静态和最终字段。
当我得出结论,唯一的区别在于接口根本不能具有实例字段这一事实时,我是否纠正?
答案 0 :(得分:0)
接口仅描述应实现哪些属性和方法,而没有描述方法应如何工作。
但是抽象类可以描述方法的工作方式,就像常规类一样。例如:
abstract class MyClass {
abstract method_1() // a method with no implementation
method_2() { // a method with implementation
// do something
}
}
界面如下:
interface MyInterface {
method_1(): void;
method_2(): string;
}
答案 1 :(得分:0)
interface
通常是某种类型声明,而class
或abstract class
是class
声明,在JS中它们只是构造函数,尽管它们通常定义特定的“类型”的值。 abstract
是两者之间的一种特殊情况,因为它们定义了一个新的具体值(JS中的构造函数),但是如果不进行子类化就无法实例化。
最底行,interfaces
是在类型空间中的声明,而[abstract] class
是在值空间中的声明。例如,在打字稿中,您可以使用class implements
桥接两者。在JavaScript中,术语“接口”通常是指某些API返回的特定值类型的行为的一般形式(请参见https://developer.mozilla.org/en-US/docs/Web/API/Event,其中术语interface
用于描述不同类型的事件)。 / p>