• 设计模式之美——封装,继承,多态的意义


    • 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。
    • 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。在这里插入图片描述

    关于多继承:

    c++首先引入的多重继承带来了诸如菱形继承一类的问题,而后为了解决这个问题又不得不引入了虚继承这种概念。

    然而在实际的应用中人们发现继承更多的只被用在两种场合:扩充/改善基类,以及实现多态。对于前者,单继承足以;而对于后者,则真正需要的其实是纯抽象类,即只包含纯虚函数的基类。

    而对于这一种基类,由于其目的和普通的实例类已经有所不同,因此在java中将其改称为interface,即接口加以明确区分。

    因此,java或者c#所谓的不支持多重继承,只是不支持对实例类的多重继承——因为这种继承所带来的一点点代码上的缩减远比不上其引入的麻烦,但是对于用于实现多态的多重继承,即implement interface依然是很好的支持了的。

    总结:

    封装

    What:隐藏信息,保护数据访问。
    How:暴露有限接口和属性,需要编程语言提供访问控制的语法。
    Why:提高代码可维护性;降低接口复杂度,提高类的易用性。

    抽象

    What: 隐藏具体实现,使用者只需关心功能,无需关心实现。
    How: 通过接口类或者抽象类实现,特殊语法机制非必须。
    Why: 提高代码的扩展性、维护性;降低复杂度,减少细节负担。

    继承

    What: 表示 is-a 关系,分为单继承和多继承。
    How: 需要编程语言提供特殊语法机制。例如 Java 的 “extends”,C++ 的 “:” 。
    Why: 解决代码复用问题。

    多态

    What: 子类替换父类,在运行时调用子类的实现。
    How: 需要编程语言提供特殊的语法机制。比如继承、接口类、duck-typing。
    Why: 提高代码扩展性和复用性。

    3W 模型的关键在于 Why,没有 Why,其它两个就没有存在的意义。

    从四大特性可以看出,面向对象的终极目的只有一个:可维护性。易扩展、易复用,降低复杂度等等都属于可维护性的实现方式。

  • 相关阅读:
    Java的Socket Timeout和tcp的存活探测包是不是一个东西
    卷积的计算过程
    Java Character.SubSet hashCode()方法具有什么功能呢?
    Django序列化与反序列化
    闭包——破坏第三方库
    10.请介绍一下cookie
    设计模式-观察者模式
    【C++】【Opencv】cv::GaussianBlur、cv::filter2D()函数详解和示例
    【Transformer】Syntax-augmented Multilingual BERT for Cross-lingual Transfer 阅读笔记
    关于“网络安全”五点须知!
  • 原文地址:https://blog.csdn.net/iblade/article/details/127590883