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

编程入门 行业动态 更新时间:2024-10-28 16:17:09

<a href=https://www.elefans.com/category/jswz/34/1769334.html style=面向对象编程的思想(3)"/>

面向对象编程的思想(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的代码。并在父类的基础上添加新的行为。在面向对象的编程中,继承是抽象化的具体实现。

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

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


更多推荐

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

本文发布于:2024-03-08 06:26:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720058.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面向对象   思想

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!