我正在使用继承通过基类和派生类拆分逻辑。
在以下情况下:
export class FirstClass{
constructor(){}
//consoleGivenMessage('dummy text');}
export class SecondClass extends FirstClass{
constructor(){
super();
}
consoleGivenMessage(text:string){
console.log(text);
}}
从基类调用函数的方式是什么?是否也应该在基类中实现“ consoleGivenMessage(text:string)
”?
欢迎任何帮助
答案 0 :(得分:1)
这个问题的简短答案是,您必须在consoleGivenMessage(text: string)
中实现FirstClass
,以便可以在FirstClass
和SecondClass
的实例上调用它。
但是,还有更多-
通常,您从派生类中调用继承的方法,而不是相反。但是,您还可以具有一个基类,该基类依赖于在派生类中实现的抽象方法。
说,您有一个类A
依赖于方法DoIt()
,该方法仅在派生类B
中实现,您必须声明A
作为抽象类和DoIt()
作为抽象方法;然后,在B
(不是抽象的-这是具体的)中,您将实现方法DoIt
()。
这也意味着您无法实例化A
的对象,因为如果没有完整实现DoIt
它就不会完成,而是可以实例化B
的对象。但是,您可以定义A
的对象,例如:const a: A = new B()
。并且,您可以致电a.DoIt()
。在这种情况下,实际上将调用B.DoIt()
的实现。
Template Method design pattern中使用了此技术。
TypeScript类,继承和抽象类是well documented。