面向对象(类,面向对象三大特性)
面向对象的编程区别于面向过程的编程,其操作的单元是类,而面向过程操作的单元是方法。即面向过程的编程是由一个又一个的方法组成的。而面向对象的编程是由一个又一个类组成的。相对于面向过程,面向对象的代码复用性更好,代码的隐蔽性更高,并且更加符合人类思维的方式。
面向对象的最基础的单元就是类。类(Class)是一个抽象的概念,是对某一类事物的描述。例如:猫,狗,人。而对象(object)就是类的实例化。即符合类描述的具体的单个成员。例如我就是Person类实例化的对象。我是符合人描述的具体的单个成员。在创造对象的过程就叫做类的实例化。
类包含描述某种事物的状态(例如姓名,性别)和行为(唱歌,跳舞,写代码)。
在.net平台而言,最基本的编程结构就是类类型。正式的说,类是由字段数据(通常叫做成员变量)以及操作这个数据的成员(如构造函数,属性,方法,事件等)所构成的自定义类型。其中字段数据表示状态。
1
2
3
4
5
6
7
8
9
10
|
Class Person
{
//表示自身状态的字段
String Name;
String Sex;
//表示行为的方法
Public void Sing();
Public void Dance();
Public void Coding();
}
|
面向对象编程(OOP)的三个特性:
1.封装性
封装是将对象用户(用你编写的类进行编程的人)不必了解的实现细节隐藏起来的一种语言能力。
1 //DatabaseReader封装了数据库操作的细节 2 DatabaseReader dbReader = new DatabaseReader(); 3 dbReader.Open(@"C:\AutoLot.mdb");
和封装编程逻辑紧密相关的概念就是数据的保护概念。理想情况下对象的状态数据都应该是隐蔽的,外部不能直接的访问,只能通过访问函数来进行“有礼貌的访问”。
2.继承性
继承指的是基于已有的类型来创建心类的语言能力。通过继承,子类可以继承基类(或称父类)的核心功能,并且扩展了基类的行为。
从图中我们可以看出“矩形是图形,图形是对象”这就构建成了一种“is - a”的关系,Is- a关系又称为继承关系。
我们会认为Shape定义了许多派生类都公有的成员(颜色,高度)。由于Rectangle扩展了Shape,它也就继承了由Shape和Object定义的核心功能。同时它还有属于自己独特的功能。
区别于C++,C#不支持多重继承的概念(所以引入了接口的概念)继承的一个很大的优点就是提高了代码的复用性,OOP中还有另外的一种形式的代码重用:包含/委托模型(has-a关系,也成聚合)这种重用的形式不是用来建立父类和子类关系的。它意味着,一个类可以定义另一个类的成员变量,并向对象用户间接的公开它的功能。
例如构建一个汽车(Car)的类,想表达一辆车中有一个(has-a)收音机的概念。让Car继承Radio类显然是不符合逻辑的。需要的是两个类一起合作,其中Car类创建并公开了Radio的功能。
1 Class Car 2 { 3 Radio _Radio; 4 } 5 Class Radic 6 { 7 8 }
3.多态性
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
实际上就是同一个类型的实例调用“相同”的方法,产生的结果是不同的。这里的“相同”打上双引号是因为这里的相同的方法仅仅是看上去相同的方法,实际上它们调用的方法是不同的。
当CirCle和Rectangle都调用Draw()的时候,看似这两个实例调用了“相同”的方法,但是实际上,它们是调用各自的Draw()方法。所以只是看似相同,实际上是不同的方法。并且产生了不同的执行结果,这就是多态性。
同时,这里讲的多态性也只是简单的多态性。多态性用来当基类规定好一些实现的方法时,子类只需要重写这些方法就好。这样增强了代码的复用性。
转载于:https://www.cnblogs.com/kun-boke/p/5752105.html
面向对象(类,面向对象三大特性)相关推荐
- day31 Pyhton 面向对象的基础 三大特性
一.内容回顾 封装 1.概念 笔记 2.__名字 在类的外部就不能用了 3.私有化的 不能被子类继承,也不能在其他任何类中调用 三个装饰器方法(装饰类中的方法) 1.不被修饰的 普通方法,会使用对象 ...
- 【Java】《Java面向对象编程的三大特性》阅读笔记
前言 偶然读到这篇文章(<Java面向对象编程的三大特性>),想来这也算论文?这种还不满网络都是?读罢觉得写得还真不错,这里以我愚见,简单点评一二,不足之处还望指教. 阅读笔记 笔记1 文 ...
- 面向对象编程的三大特性
面向对象编程的三大特性 封装 该露的露,该藏的藏 我们程序设计要追求"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用. ...
- Go面向对象编程的三大特性
Go面向对象编程的三大特性 1.基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样. 2.面向对象编程思想-抽象 抽象: 在定义一个结构体类型时,实 ...
- python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解
Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象 ...
- Python面向对象之:三大特性:继承,封装,多态以及类的约束
前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...
- 【总结记录】面向对象设计OOP三大特性(封装、继承、多态)、七大基本原则的理解(结合代码、现实实例理解)
文章目录 一. 三大特征的理解 (1)封装 (2)继承 (3)多态 (4)面向对象.面向过程的对比 二. 七大基本原则的理解 (1)单一职责原则 (2)开放封闭原则(OOP 核心) (3)里氏替换原则 ...
- Java 面向对象编程的三大特性——封装、继承、多态
一.类和对象 1. 首先,什么是对象呢? 对象简单的来说就是一个实物,比如一部 iPhone X 手机,它就是对象.它的屏幕.内存等就是它的属性. 手机能够打电话,发短信,这个功能就是它的方法. 2. ...
- 面向对象之:三大特性:继承(已讲),封装,多态
目录 1.封装 2.多态 3.类的约束 4. super()深入了解 前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个 ...
- 04 面向对象之:三大特性:继承,封装,多态
前言: Python面向对象的三大特性:继承,封装,多态 1.封装:把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块,函数,对象,打包成模块.这都属于封装的思想.具体的情况具体分析,比如, ...
最新文章
- cocos2d-x游戏开发(一)开始菜单
- TS基础1(类型定义、接口)-学习笔记
- 【LeetCode笔记】34. 在排序数组中查找元素的第一个和最后一个位置(Java、二分)
- 跟angular2学一键开启项目--关于上个react-redux项目的一键调试
- windows mac linux 木马,针对Linux Windows macOS系统Adwind木马广告攻击
- thinkphp生成的验证码不显示问题解决
- 8uftp工具,这款工具有什么作用?它的优势在哪里?
- 【通过输入身份证前17位得到省份,性别,年龄,出生日期和最后一位】
- 关于网站建设的主要流程和步骤(小白指南)
- 实例分割: 一文读懂 E2EC (CVPR 2022)
- 万洲金业集结全面行业优势 打造贵金属产品理财矩阵
- 数码摄影入门:焦距是什么?
- plt.imshow()无法显示两站图片?
- 一家AI创业公司不平凡的2018年
- QQ坦白说如何查对方身份??其实很简单~
- 安全集群访问非安全集群问题记录
- flir相机、livox和xsense驱动安装与测试笔记
- 【Unity3D】材质 Material ( 材质简介 | 创建材质 | 设置材质属性 | 对 3D 物体应用材质 | 资源拖动到 Inspector 检查器中的 Material 属性中 )
- 猿创征文|关于胖姑姑在数据领域常用TOP5工具
- 天下布魔服务器维护,天下布魔wiki手游
热门文章
- 安全厂商安全技术工程师(校招)——技术要求
- Selenium 自动测试软件的使用(自动化操作)
- 高级排序之分割法(以某数为基准分割)
- 第十二章:Spring Cloud Config Server 的配置
- Linux时间子系统(十六) clockevent
- Bug提交规范及注意事项
- 浙江富润拟12亿并购泰一指尚 跨界互联网及大数据
- 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(九)NagVis安装
- 2014 Red Hat Summit(红帽峰会)PPT合集
- Liferay被SourceForge评为7月最佳开源项目