抽象类的子类有什么约束?

时间:2017-08-29 23:30:44

标签: angular oop typescript inheritance

假设我们在Typescript中声明一个抽象类,如下所示:

export abstract class A {

//my concrete method    
function add(x, y) {
    return x + y;
}

//my abstract method
abstract divide();       
}

如果我们有一个扩展A的子类B,对B的约束是什么?更具体地说,我们知道B继承自A,所以我们已经有了一个带有add()的具体方法,并且我们知道我们有一个带有divide()的抽象方法方法,但是我们还可以在B中添加其他没有继承的具体方法来自A.我可以在B中定义pow()而不是在A中将其声明为抽象方法。如下所示:

export class B extends abstract class A {

//my concrete method
divide(){//implementation details go here};

//another concrete method?
pow(){
    //insert imp details;  
}

这个问题的动机是我在Angular 2/4应用程序的两个屏幕上重构代码,其中两个ts组件共享许多相同的代码。我想创建一个抽象类并将公共代码推送到抽象类中并添加一些抽象方法。但是,我在每个屏幕上都没有几个完全独立的方法,所以我想知道沿着这些方法重构代码是否好/坏/好的做法。谢谢!

1 个答案:

答案 0 :(得分:0)

派生类可以覆盖基类中的抽象或非抽象方法。他们也可以声明自己的方法。这完全没问题。

相关问题