一、封装
封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。
C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。
一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:

public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。

二、继承
继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。
当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。
继承的思想实现了 属于(IS-A) 关系。例如,哺乳动物 属于(IS-A) 动物,狗 属于(IS-A) 哺乳动物,因此狗 属于(IS-A) 动物。
多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。C# 不支持多重继承。但是,您可以使用接口来实现多重继承。

三、多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。
在 C# 中,每个类型都是多态的,因为包括用户定义类型在内的所有类型都继承自 Object。
在 C#语言中体现多态有三种方式:虚方法,抽象类, 接口。
<1>虚方法
在父类中使用 virtual 关键字修饰的方法, 就是虚方法。在子类中可以使用 override 关键字对该虚方法进行重写。

注意:

虚方法必须使用virtual修饰
虚方法同抽象方法(adstract)一样使用override关键字重写
虚方法在子类中可以实现,也可以不实现。
虚方法必须有方法体哪怕是空的
虚方法不能使用sealed修饰,否则不能重写。
virtual 修饰符不能与 static、abstract``private 或 override 修饰符一起使用。

<2>抽象类
使用关键字 abstract 创建抽象类,用于提供接口的部分类的实现。当一个派生类继承自该抽象类时,实现即完成。抽象类包含抽象方法,抽象方法可被派生类实现。派生类具有更专业的功能。

注意:

①不能创建一个抽象类的实例。
②不能在一个抽象类外部声明一个抽象方法。
③通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。

<3>接口
接口的定义是指定一组函数成员而不实现成员的引用类型,其它类型和接口可以继承接口。

注意:

接口是一个引用类型,通过接口可以实现多重继承。
C#中接口的成员不能有new、public、protected、internal、private等修饰符。
接口中只能声明"抽象"成员(所以不能直接下一步对接口进行实例化(即不能使用new操作符声明一个接口的实例对 象)),而不能声明共有的域或者私有的成员变量。
接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。
接口名称一般都以“I”作为首字母(当然不这样声明也可以),这也是接口和类的一个区别之一。 [1]
接口成员的访问级别是默认的(默认为public),所以在声明时不能再为接口成员指定任何访问修饰符,否则 编译器会报错。
接口成员不能有static、abstract、override、virtual修饰符,使用new修饰符不会报错,但会给出警告说不需要关键字new。
在声明接口成员的时候,不准为接口成员编写具体的可执行代码,也就是说,只要在对接口进行声明时指明接口的成员名称和参数就可以了。
接口一旦被实现,实现类必须实现接口中的所有成员,除非实现类本身是抽象类(通过具体的可执行代码实现接口抽象成员的操作)。

C# 面向对象三大特性相关推荐

  1. 【Python学习笔记】面向对象三大特性

    2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...

  2. python 面向对象(三大特性)

    python 面向对象(初级) (思维导图 ↑↑↑↑↑) 概述: 面向过程:根据业务逻辑从上到下垒代码. 函数式:将某功能代码封装至函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  3. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  4. 【Python面试】 说说Python面向对象三大特性?

    往期面试题: 谈谈对 Python 和其他语言的区别? 说说 Python 解释器种类以及特点? 说说4种常用编码的区别? 废话不多说,开始今天的题目: 问:说说Python面向对象三大特性? 答:P ...

  5. python面向对象三大特性、类的约束、print带颜色输出及super补充

    面向对象三大特性.类的约束.print带颜色输出及super补充 简述: python面向对象的三大特性: 1.继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为 ...

  6. python面向对象三大特性_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__

    一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...

  8. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态

    ​ 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...

  9. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性

    ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为 ...

  10. C#面向对象三大特性

    C#面向对象三大特性 面向对象的三个基本特征是:封装.继承.多态. 封装:隐藏内部功能的具体实现,只保留和外部交流数据的借口.就好比电视机,用一个外壳把内部零部件及控制电路封装起来,只提供按钮或者遥控 ...

最新文章

  1. Kaggle入门 (Titanic TensorFlow Softmax)
  2. Java手写Hashmap(HashMap的基本用法)
  3. 【HANA系列】SAP HANA XS使用Odata标志全解析
  4. localhost拒绝访问的解决方法
  5. EasyDarwin云平台:EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
  6. 联想新计算机开机黑屏,联想笔记本电脑开不了机 联想笔记本电脑开机黑屏怎么办...
  7. python百度地图poi_百度地图的poi如何调用
  8. 经典逻辑题:猜牌问题——网上的结论是没问题的
  9. 论今日头条背后的产品逻辑分析
  10. 保障IM推送、优化移动网络 网易云信解决移动IM稳定难题
  11. 马云爸爸成立快一年的达摩院,究竟在做什么?
  12. Python大屏看板最全教程之Pyecharts图表
  13. 坚信人类记忆是以大分子物质存储的朋友们请看过来
  14. Java链表的书_JAVA实现双向链表的增删功能,完整代码package linked;class LinkedTable{ }public class Linke...
  15. 围棋GUI界面Sabaki的安装与使用
  16. 通达OA任意用户登录复现(最新)
  17. #我的第二十一堂云计算课# #开源数据库MySQL DBA运维实战 第2章 SQL1#
  18. Flutter轻松实现Adobe全家桶Logo列表功能
  19. MPAndroidChart 教程:设置数据 Setting Data
  20. txt文本转azw3(kindle格式)

热门文章

  1. 基于hexo搭建个人博客
  2. 新华三商业BG:与合作伙伴一起,扎到下沉市场深处!
  3. 物联网设备安全2.3 低能耗蓝牙和通过移动应用程序开锁
  4. 跟着我学习 AI丨初识 AI
  5. 列表中滚动鼠标Tooltip文本提示组件在列表中出现错位问题优化、elememt库的组件;
  6. 电脑知识大全之如何只修改word一页的页眉
  7. STM32CUBEMX开发GD32F303(14)----IIC之配置OLED
  8. 【粉丝专享福利】联合6大博主送出18本ChatGPT扫盲教程实体书,文末有惊喜
  9. 物联网平台Node-red初涉——访问搭建的简易服务器
  10. 通过浏览器F12开发者工具的javascript控制台给Vue表单赋值