我个人对OOP的理解
OOP面向对象的思维:
pay1:封装
A.避免使用非法数据赋值
B.保证数据的完整性
C.避免类内部发生修改的时候,导致整个程序的修改
pay2:继承
A.继承模拟了现实世界的关系,OOP中强调一切皆对象,这符合我们面向对象的编程思考方向
B.继承实现了代码的复用,这在例子中我们已经有所体会,合理地使用继承,会使我们的代码更加简洁
C.继承使得程序结构清晰,子类和父类的层次结构更清晰,最终的目的是是子类只关注子类的相关行为和状态,无须关注父类的行为和状态.例如,学员只需要管 理学号、爱好这种属性,而公共的姓名、年龄、性别属性交给父类管理
pay3:多态
A.相同的两个或者是多个属于不同类的对象,对于同一个消息(方法的调用)做出不同响应的行为方式
pay4:接口
A.接口是对继承单根性的扩展:请你回想一个我们在第六章的继承中的问题,在C#中,一个子类可以继承多个父类吗?根据我们学习的知识,这是不可以的。但 是接口可以说是充某种程度上实现了多重继承的功能。在C#中,一个类虽然不能实现多重继承,但是一个类可以实现多个接口。通过实现多个接口可以说是变 相的实现了类的多重继承。
B.接口是一种规范和标准:一个类如果是实现了一个接口,意味着这个类遵循了某种规范和约定。其它类可以通过这些规范和约定与她通信
C.接口屏蔽了实现的细节:接口可以让接口的使用者不必关心接口的实现者是如何实现USB接口标准,就可以正常使用它了。同样在程序中一个类 如果实现了IComparable接口,便可以让这个类的对象进行排序。
D.接口的使用方便团队的协助开发:例如一个系统,加入要实现对象的排序功能,实现接口的专门实现接口,而做排序功能的专门做排序,如果一 个系统都能够做到这种设计,便可以更为方便的使用开发团队进行的分工明确的协作开发!
pay5:序列化和反射
A.我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法
我个人对OOP的理解的更多相关文章
- iOS - 对OOA、OOD、OOP的理解
很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- C++——OOP面向对象理解
从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说 ...
- 对OOP的理解
OOP是面向对象编程Object Oriented Programming,特征分别是封装.继承.多态.抽象. 封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如 ...
- c#基础-oop(面向对象理解)
OOP-面向对象 封装,继承多态 一个桌子,用面向对象来描述一下它这个桌子项目 定义桌子类 对象:桌子 桌子的属性:名字,材质,体积 桌子的方法;放东西(方法) 现在桌子要放书,放花瓶,放文件(这里就 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
随机推荐
- 为 10000+ 业务系统提供数据可视化能力的 AntV 又进化了
小蚂蚁说: 2018 年 AntV 品牌日以知新.知心为主题,旨在让产品一直「知新」,与用户一直「知心」.AntV 是蚂蚁金服全新一代数据可视化解决方案,致力于提供一套简单方便.专业可靠.无限可能的数 ...
- P3146 [USACO16OPEN]248 & P3147 [USACO16OPEN]262144
注:两道题目题意是一样的,但是数据范围不同,一个为弱化版,另一个为强化版. P3146传送门(弱化版) 思路: 区间动规,设 f [ i ][ j ] 表示在区间 i ~ j 中获得的最大值,与普通区 ...
- 关于JAVA中包装类的是什么类型传递这个问题的笔记
背景知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值.如果在函数中改变了副本的值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个参数的引用,这 ...
- yum节省安装时间
yum install java-1.8.0-openjdk 安装jdk yum install tomcat 安装tomcat wget http://repo.mysql.com/mysql-co ...
- HDU 2569(简单的递推)
彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- nRF52832定时器
1概述 定时器能够被配置为两种模式:定时模式和计数模式,nrf52832有五个定时器,timer0--timer4 . 2常用得函数 函数功能:初始化定时器 ret_code_t nrf_drv_ti ...
- Windows下使用创建多层文件夹 SHCreateDirectoryEx 函数需要注意的问题
1.在使用SHCreateDirectoryEx函数创建多层文件夹的过程中,发现在文件夹路径中,只能使用\\而不能使用/,否则将创建文件夹失败. 2.下面为在MFC中使用的代码片段 CString n ...
- spring集成JMS访问ActiveMQ
首先我们搭建一个spring-mvc项目,项目可以参考:spring-mvc 学习笔记 步骤: 在pom.xml中加上需要的包 修改web.xml,增加IOC容器 spring配置文件applicat ...
- ssh服务及安全配置
1.清空防火墙 关闭 setenforcesetenforce 2 getenforce 3 setenforce 0 4 iptables -F 5 systemctl stop firewal ...
- pandas选择单元格,选择行列
首先创建示例df: df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list('5678')) d ...