zoukankan      html  css  js  c++  java
  • 面向对象编程的思想(2)

    名称:里氏替换原则(Liskov Substitution Principle)LSP

    核心:在任何父类出现的地方都可用它的子类替代。换言之:子类型必须能够替换掉他们的父类型。

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

    public class OldCarpenter{

    public void MakeFurniture(){

    System.out.println("做出一把椅子!");

    }

    使用YoungCarpenter继承OldCarpenter类:

    public class YoungCarpenter extends OldCarpenter{

    //覆盖父类的方法

    @Override

    public void MakeFurniture(){

    System.out.println("徒弟做出一把椅子!");

    System.out.println("将椅子进行装饰!");

    }


    客户端测试代码:

    public static void main(String[] args){

    OldCarpenter carpenter = new OldCarpenter();

    System.out.println("原来找老木匠做椅子");

    carpenter.MakeFurniture();

    System.out.println("后来老木匠让徒弟代做");

    carpenter = new YoungCarpenter();

    carpenter.MakeFurniture();

    }


    运行结果很明显:在这个过程中,小木匠替代了老木匠的座椅子,对顾客是没有影响的。

    总结:上边的YoungCarpenter类的对象完全可以替代OldCarpenter,只有在子类可以完全替代父类是,父类才是真正得到了复用。子类可以在父类的基础上添加新的行为。在面向对象的编程中,继承是抽象化的具体实现。

    优点:里氏替换原则,舍得使用父类模块无需修改,通过使用不同的子类实现不同的扩展,是对实现抽象化的具体步骤的规范。

    后记:面向对象编程中,同一个继承体系中的对象应该具有共同的行为特征,对代码的重用从抽象转焕成实现。


  • 相关阅读:
    畅通工程续 (dijkstra)
    最短路径问题 HDU 3790
    【基础算法-模拟-例题-玩具谜题】-C++
    【基础算法-模拟-例题-金币】-C++
    【动态规划例题-数塔问题】-C++
    【基本数据结构之'图'】
    【最小生成树之Kruskal例题-建设电力系统】-C++
    【最短路算法例题-升降梯上】-C++
    【基本数据结构之栈】
    【栈-例题】网页跳转-C++
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823171.html
Copyright © 2011-2022 走看看