面向对象编程的思想(3)

开闭原则是面向对象开发中所有设计原则的核心

名称:开闭原则(Open Closed Principle)OCP

核心:一个对象对扩展开放,对修改关闭。换言之:程序中的实体对象(模块、类、方法等)应该可以进行扩展,但不应该可以修改。对类的修改是通过增加代码实现的,而不能通过修改代码实现。

例子:例如我们设计一个Animal类:

 1 public class Animal{
 2     //动物会呼吸
 3     public void breath(){
 4         System.out.println("呼吸!");
 5     }   
 6 }

设计一个Cat类继承Animal类:

1 public class Cat extends Animal{
 2     public void catchMouse(){
 3         System.out.println("猫抓老鼠!");
 4     }   
 5 }   


客户端测试代码:

 1 public class TestCat{
 2     public static void main(String[] args){
 3         Cat cat = new Cat();
 4         cat.breath();
 5         cat.catchMouse();
 6     }
 7 }

运行结果:

呼吸!
猫抓老鼠!

如果现在有一只超强的猫,叫mimi的也会游泳:实现过程如下:

设计一个Animal类:

 1 public class Animal{
 2     //动物会呼吸
 3     public void breath(){
 4         System.out.println("呼吸!");
 5     }   
 6 }

设计一个Cat类继承Animal类:

1 public class Cat extends Animal{
 2     public void catchMouse(){
 3         System.out.println("猫抓老鼠!");
 4     }   
 5 }   

设计一个MimiCat类:

 1 public class MimiCat extends Cat{
 2     public void swimming(){
 3         System.out.println("咪咪在游泳!");
 4     }   
 5 } 

客户端测试代码:

  1 public class TestCat{
 2     public static void main(String[] args){
 3         Cat cat = new Cat();
 4         cat.breath();
 5         cat.catchMouse();
 6 
 7         System.out.println("超强猫mimi的行为:");
 8         MimiCat mimi = new MimiCat();
 9         mimi.breath();
10         mimi.catchMouse();
11         mimi.swimming();
12     }
13 }

运行结果:

呼吸!
猫抓老鼠!
超强猫mimi的行为:
呼吸!
猫抓老鼠!
咪咪在游泳!
请按 ENTER 或其它命令继续

在这个过程中,对cat扩展成mimicat时,是通过添加代码实现,并没有修改cat的代码,对原来使用cat类的代码是没有影响的。

总结:上边的MimiCat类作为Cat的子类,复用Cat和Animal的代码。并在父类的基础上添加新的行为。在面向对象的编程中,继承是抽象化的具体实现。

优点:开放封闭原则的核心是面向抽象编程,而不是面向具体编程,抽象是相对稳定的,让类依赖与抽象,对修改来说就是封闭的。面向对象编程中的继承及多态机制,可以实现对抽象体的继承,重写方法改变其固有行为,实现新的方法,达到扩展开放的目标。

后记:面向对象编程中,通过继承实现对类的扩展,实现封闭修改和扩展开发的目地。


原文地址:https://www.cnblogs.com/guochaoxxl/p/6823170.html