2015-04-07 42 views
1

我知道开放封闭原则意味着开放延伸和封闭进行修改。考虑一个例子如下开放封闭原则与继承之间的区别

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是如何与继承不同的

回答

1

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

作为一个方面说明,我相信这会更好地放在programmers.stackexchange.com网站。

+0

考虑我创建Vehicle类的jar文件,然后Bike类从jar扩展Vehicle类。在这种情况下,我们不能修改Vehicle类,Bike扩展它。这是开放封闭原则的一个好例子吗? –

+1

我想说清楚一点,假设你有一个车辆类,你甚至可以创建一个车类,并且他们都定义了你如何服务他们。现在你把它作为一个罐子发布,如果有人带着自行车或者甚至是特定的汽车说有特定服务要求的兰博基尼,那么你将不得不延长Car类或Vehicle类来“添加”这个功能。 –

+0

感谢它清除了这个概念。 :) –

相关问题