面向对象的编程区别于面向过程的编程,其操作的单元是类,而面向过程操作的单元是方法。即面向过程的编程是由一个又一个的方法组成的。而面向对象的编程是由一个又一个类组成的。相对于面向过程,面向对象的代码复用性更好,代码的隐蔽性更高,并且更加符合人类思维的方式。

  面向对象的最基础的单元就是类。类(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

面向对象(类,面向对象三大特性)相关推荐

  1. day31 Pyhton 面向对象的基础 三大特性

    一.内容回顾 封装 1.概念 笔记 2.__名字 在类的外部就不能用了 3.私有化的 不能被子类继承,也不能在其他任何类中调用 三个装饰器方法(装饰类中的方法) 1.不被修饰的  普通方法,会使用对象 ...

  2. 【Java】《Java面向对象编程的三大特性》阅读笔记

    前言 偶然读到这篇文章(<Java面向对象编程的三大特性>),想来这也算论文?这种还不满网络都是?读罢觉得写得还真不错,这里以我愚见,简单点评一二,不足之处还望指教. 阅读笔记 笔记1 文 ...

  3. 面向对象编程的三大特性

    面向对象编程的三大特性 封装 该露的露,该藏的藏 我们程序设计要追求"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用. ...

  4. Go面向对象编程的三大特性

    Go面向对象编程的三大特性 1.基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样. 2.面向对象编程思想-抽象 抽象: 在定义一个结构体类型时,实 ...

  5. python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象 ...

  6. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  7. 【总结记录】面向对象设计OOP三大特性(封装、继承、多态)、七大基本原则的理解(结合代码、现实实例理解)

    文章目录 一. 三大特征的理解 (1)封装 (2)继承 (3)多态 (4)面向对象.面向过程的对比 二. 七大基本原则的理解 (1)单一职责原则 (2)开放封闭原则(OOP 核心) (3)里氏替换原则 ...

  8. Java 面向对象编程的三大特性——封装、继承、多态

    一.类和对象 1. 首先,什么是对象呢? 对象简单的来说就是一个实物,比如一部 iPhone X 手机,它就是对象.它的屏幕.内存等就是它的属性. 手机能够打电话,发短信,这个功能就是它的方法. 2. ...

  9. 面向对象之:三大特性:继承(已讲),封装,多态

    目录 1.封装 2.多态 3.类的约束 4. super()深入了解 前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个 ...

  10. 04 面向对象之:三大特性:继承,封装,多态

    前言: Python面向对象的三大特性:继承,封装,多态 1.封装:把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块,函数,对象,打包成模块.这都属于封装的思想.具体的情况具体分析,比如, ...

最新文章

  1. cocos2d-x游戏开发(一)开始菜单
  2. TS基础1(类型定义、接口)-学习笔记
  3. 【LeetCode笔记】34. 在排序数组中查找元素的第一个和最后一个位置(Java、二分)
  4. 跟angular2学一键开启项目--关于上个react-redux项目的一键调试
  5. windows mac linux 木马,针对Linux Windows macOS系统Adwind木马广告攻击
  6. thinkphp生成的验证码不显示问题解决
  7. 8uftp工具,这款工具有什么作用?它的优势在哪里?
  8. 【通过输入身份证前17位得到省份,性别,年龄,出生日期和最后一位】
  9. 关于网站建设的主要流程和步骤(小白指南)
  10. 实例分割: 一文读懂 E2EC (CVPR 2022)
  11. 万洲金业集结全面行业优势 打造贵金属产品理财矩阵
  12. 数码摄影入门:焦距是什么?
  13. plt.imshow()无法显示两站图片?
  14. 一家AI创业公司不平凡的2018年
  15. QQ坦白说如何查对方身份??其实很简单~
  16. 安全集群访问非安全集群问题记录
  17. flir相机、livox和xsense驱动安装与测试笔记
  18. 【Unity3D】材质 Material ( 材质简介 | 创建材质 | 设置材质属性 | 对 3D 物体应用材质 | 资源拖动到 Inspector 检查器中的 Material 属性中 )
  19. 猿创征文|关于胖姑姑在数据领域常用TOP5工具
  20. 天下布魔服务器维护,天下布魔wiki手游

热门文章

  1. 安全厂商安全技术工程师(校招)——技术要求
  2. Selenium 自动测试软件的使用(自动化操作)
  3. 高级排序之分割法(以某数为基准分割)
  4. 第十二章:Spring Cloud Config Server 的配置
  5. Linux时间子系统(十六) clockevent
  6. Bug提交规范及注意事项
  7. 浙江富润拟12亿并购泰一指尚 跨界互联网及大数据
  8. 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(九)NagVis安装
  9. 2014 Red Hat Summit(红帽峰会)PPT合集
  10. Liferay被SourceForge评为7月最佳开源项目