我知道开闭原则意味着对扩展开放,对修改封闭。考虑如下示例

public class Vehicle{
    public void service(){
        //vehicle servicing code
    }
}

public class Bike extends Vehicle{

    public void service(){
        // bike specific servicing
    }
}

现在我明白 Bike 类扩展了 Vehicle 并使用开放封闭原则添加了新功能。

考虑我创建 Vehicle 类的 jar 文件,然后 Bike 类从 jar 扩展 Vehicle 类。在这种情况下,我们不能修改 Vehicle 类并且 Bike 扩展它。这是开闭原则的一个很好的例子吗?
我想知道 OCP 与继承有何不同

最佳答案

OCP 与继承没有区别,而是 OCP 的“开放”部分对扩展开放,但应关闭以进行修改。
IE。代码应该只针对错误/错误进行修改,但对于新的扩展或对应该扩展的功能的更改。

作为旁注,我相信这会更好地放在程序员.stackexchange.com 站点上。

关于inheritance - 开闭原则和继承的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29497978/

10-10 21:26