美文网首页
面向对象编程的反向学习

面向对象编程的反向学习

作者: lotus_yoma | 来源:发表于2020-04-08 15:14 被阅读0次

今天看了篇关于面向对象编程的文章,发现自己对于面向对象编程的基础理解甚少。作者对于面向对象编程的问题描述正式我们在编写代码时需要注意的地方,于是跟着作者的思路重新梳理了一下面向对象编程的三大特性。文章地址

继承

可以使子类具有父类的属性和方法或者重新定义、追加属性和方法等。

问题-1:继承的类移植到新项目时,需要将它所有的祖先类都移过去。只能使用较浅的类层次结构,减少祖先类。

问题-2:一个子类不能同时继承于多个父类,只能从一个父类继承。A类想要继承多个类(B、C)的属性和方法,这在面向对象语言中是不可能实现的。

问题-3:基类变动会影响继承类。继承类的开发者要清楚基类是如何实现的,而且基类的每个变动都要通知所有继承类的开发者。

封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式。

问题-1:引用问题。为了提高效率,对象传递给函数时传递的是引用,而不是值。一个对象A的引用被传递给另一个对象B的函数,函数将这个对象引用放到私有变量中,用封装保护起来。但这个传递的对象A是不安全的,其他代码也可能拥有指向A对象的指针,可以修改A的值。

解决-1:B的函数必须要复制传递过来的A对象,而且不能是浅复制,必须是深复制,但这样没有效率。

多态

多个子类继承于同一个父类,重写父类的方法,可以实现不同的操作。即不同子类对同一个消息可以作出不同的响应。

如果两个类并没有相同的父类或者祖先类,想要实现同样的方法,可以使用协议和代理,这样也可以实现多态性。

相关文章

  • 面向对象编程的反向学习

    今天看了篇关于面向对象编程的文章,发现自己对于面向对象编程的基础理解甚少。作者对于面向对象编程的问题描述正式我们在...

  • C#面向对象设计技巧

    面向对象编程学习必须清楚: 学好面向对象编程语言就是要学好面向对象编程的各种原则、方法、技巧、经验、模式等。不懂这...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • 面向对象

    为什么学习面向对象?我真的不知道!1.面向对象 编程:采用面向对象的思想来编写程序找对象2.面向过程 编程: 意...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 面向对象_初识

    目录 面向对象编程介绍 类与对象介绍 私有属性与私有方法 面向对象编程 1. 面向对象编程介绍 面向对象编程:Ob...

  • 面向对象

    面向对象 是一种计算机编程架构 ,学习面向对象则要深刻了解其中的奥秘, 学习面向对象则要有面向对象的思 想,万...

  • 史上最全 Python 面向对象编程

    面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别。 面向过程编程:学习Python中有不明...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

网友评论

      本文标题:面向对象编程的反向学习

      本文链接:https://www.haomeiwen.com/subject/atutmhtx.html