2016-10-04 79 views
0

类可以添加方法,当他们从超类延伸,但他们可以做相反的,并删除方法?目标是让这些被移除的类在编译时不可访问。我基本上试图得到(新车())。在IDE中不自动完成.drive()。TypeScript类可以删除对继承方法的访问吗?

class vehicle { 
    drive() { 
     ... 
    } 
} 

class car extends vehicle { 
    //previous attempt 
    private drive() { // can't modify public/private 

    } 


} 

在编译时(tsc)有没有办法阻止汽车使用方法驱动?我们可以删除它还是修改它的可访问性?

+3

违反了SSP tenat编写代码时会发生什么。 –

+4

继承的方法不能被删除或隐藏。这会违反[多态性](https://en.wikipedia.org/wiki/Polymorphism_(computer_science))。你能解释一下你正在努力完成什么,这让你认为这是必要的吗? – 4castle

+5

这是一个红旗,表示您的班级层次被打破。 –

回答

3

否如评论所述,这表示您的层次结构不正确。派生类必须始终可以替代其基类。

你必须考虑,当有人这样

function doSomething(y: Vehicle) { 
    y.drive(); 
} 
let x = new Car(); 
doSomething(x); 
相关问题