【发布时间】:2018-03-29 14:47:46
【问题描述】:
我正在研究一些抽象概念,想知道抽象类是否应该直接实现接口,或者您应该扩展类并在子类型中实现接口。
所以在下面的例子中:
- 不再冗长
- 动物可以直接作为地球中众生的类型
interface Being{
alive:boolean;
}
abstract class Animal implements Being{
alive:boolean;
}
class Dog extends Animal{
bark(){
console.log("Bark");
}
}
class Earth{
beings:Being[];
}
例子可以改写如下:
- 比较详细,可以看到Dog实现了Being接口
interface Being{
alive:boolean;
}
abstract class Animal{
alive:boolean;
}
class Dog extends Animal implements Being{
bark(){
console.log("Bark");
}
}
class Earth{
beings:Being[];
}
我的问题是:
- 第二个例子更好吗?
- 我们需要更高版本的示例是什么?
- 高版本有什么优势?
【问题讨论】:
-
"现在你不能将 Animal 直接放在beings数组中" 是的,你可以试试。结构兼容性。
-
无论如何你都不能把 Animal 的实例直接放在那里,因为它是一个抽象类。
标签: javascript typescript abstraction