面向对象范式的核心本质是?---不是继承 不是封装也不是多态
核心本质 你可能会说 其核心本质 是类似万物皆为对象 的一种设计思想,又或者说是 封装继承多态的运用,又或者是其他的什么. 我觉得,这些说法也对,不过今天要说的是另一个概念: 依赖反转. 用了个标题党的标题,答案就开门见山一些。 其核心本质,乃是通过安全便且捷的多态实现的 依赖反转;及 由此带来的依赖关系的灵活性,以及 系统架构的灵活性。 什么是依赖反转 用一张图说明下,如下: 图中,class1 要调用 class2 的函数, 依赖反转 是通过接口实现多态,进而实现依赖反转。 如果interf2没有这个接口,即图中 蓝色线条的情况。那么classe1 直接调用 class2,那么依赖方向 和控制流方向 是一致 的,都是由 class1 到 class2. 如果有 interface2 这个接口, class2 实现了 interface2, class1调用interface2; 此时的依赖方向 就是 变成了 class2,依赖 interface2. 而这个 依赖方向和控制流的方向是相反的, 这个相反就叫做依赖反转 为什么不是 封装 继承 多态 至于为什么面向对象的核心特质 不是面向对象的三大特质,原因也很简单, 在面向对象语言出现之前,封装、继承、多态这样概念和 做法已经出现了。甚至有些地方比面向对象语言的设计更为严格。 关于封装,如果用C语言去实现封装