一、C#提供对面向对象编程(Object Oriented Programming)的完整支持;类描述对象的类型,而对象是类的具体实例,创建对象的过程也被称为实例化(Instantiation);通常使用new运算符来创建对象:

new MyType();

  ※其中()实际上代表的是调用类的默认构造函数来构建类的实例;

  ※C#还提供了类的轻量版本,称为结构,当需要创建大量对象但不希望因此占用太多内存时,可以使用结构;

  ※一般来说,类用于较复杂的行为或在对象创建后频繁修改值的数据结构,结构用于较简单的行为或在对象创建后较少修改值的数据结构;

  1.定义(Define)一个命名为MyType的类或结构,那么MyType就是类型的名称,声明(Declare)MyType类型的变量myObj,初始化(Initialize)myObj变量为新创建的对象或其它同为MyType类型且不为空的变量,那么变量myObj就指向了MyType类型的一个对象:

MyType myObj = new MyType();

  二、面向对象编程的三大特性:封装,继承,多态,其中,类完整的支持这三大特性,结构则只支持封装,不支持继承和多态:

  1.封装,是把客观事物封装成抽象的类,类可以把数据和行为只让可信的类或对象操作,对不可信的进行隐藏;封装是面向对象的特征之一,是类和对象概念的主要特性; 简单的说,一个类就是一个封装了数据以及操作这些数据的行为的逻辑实体,某些数据和行为可以是私有的,不能被外界访问,通过这种方式,对象对内部数据和行为提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分;

  2.继承,是可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展的能力; 通过继承创建的类称为子类或派生类,被继承的类称为父类或基类;继承的过程,就是从一般到特殊的过程;要实现继承,可以通过继承和组合(Composition)来实现;继承概念的实现方式有两种:实现继承是指直接使用基类的方法而无需额外编码的能力;接口继承是指仅使用方法的名称,但是子类必须提供实现的能力;

  3.多态,是允许将派生类对象赋值给其基类变量的技术,赋值之后,基类变量就可以根据当前赋值给它的派生类对象的类型以不同的方式运作;简单的说,就是允许将派生类类型的指针赋值给基类类型的指针;
  三、面向对象设计的五大基本原则 :S.O.L.I.D
  1.单一职责原则(SRP,Single Responsibility Principle):一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作;
  2.开放封闭原则(OCP,Open-Close Principle):对象应该对扩展开放,对修改封闭,这就意味着一个类应该无需修改类本身但却容易扩展;
  3. 里氏替换原则(LSP,Liskov Substitution Principle):在对象x为类型T时q(x)成立,那么当S是T的派生类时,对象y为类型S时q(y)也应成立,即对基类的调用同样适用于派生类,每一个基类实例都应该可以替换成它们的派生类实例;
  4.接口分离原则(ISP,Interface Segregation Principle):不应强迫客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不使用的方法;
  5.依赖反转原则(DIP,Dependency Inversion Principle):对象必须依靠抽象而不是具体实现,它表示高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象;


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的认可是我写作的最大动力!

作者:Minotauros
出处:https://www.cnblogs.com/minotauros/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

C#面向对象--简介的更多相关文章

  1. JavaScript面向对象简介

    JavaScript面向对象简介 @(编程) [TOC] 1. 命名空间 命名空间是一个容器,它允许开发人员在一个独特的,特定于应用程序的名称下捆绑所有的功能. 在JavaScript中,命名空间只是 ...

  2. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  3. js面向对象(构造函数与继承)

    深入解读JavaScript面向对象编程实践 Mar 9, 2016 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术. 对JavaScript而言,其 ...

  4. Python之旅Day7 面向对象&异常处理

    ########################################面向对象初识######################################### 面向对象简介 面向对象编 ...

  5. Python学习:14.Python面向对象(一)

    一.面向对象简介 Python设计之初,就是一门面向对象的语言,在Python中一切皆对象,而且在Python中创建一个对象也很简单,今天我们就来学习一下Python的面向对象的知识. 二.两种编程方 ...

  6. Java面向对象编程 -1

    面向对象简介 C语言是面向过程开发的代表 C++ 或者Java 是面向对象的编程语言 所谓的面向过程指的是面对于一个问题的解决方案,更多的情况下是不会做出重用的设计思考的. 而面向对象的主要设计形式是 ...

  7. python运维开发之第六天

    Python面向对象 python从设计之初就已经是一门面向对象的语言,在python中创建一个类和对象很容易. 面向对象简介:类(class),类变量,object(基类),实例变量,构造函数,封装 ...

  8. JavaScript重新介绍

    本文转载自 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript 引言 为什么 ...

  9. 阅读:重新介绍 JavaScript(JS教程)

    这篇文章是记录自己阅读重新介绍 JavaScript(JS 教程)的记录和个人体会 在线调试代码工具:https://codepen.io/pen 引言 分歧根源:名字Javascript和Java有 ...

随机推荐

  1. Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)

    Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...

  2. 服务发现(consul)搭建

    服务发现(consul)搭建 下载最新版 consul 本人使用的版本为1.5.1,操作系统:window server 2008 consul部署的时候分为客户端和服务端,本次操作服务器2台,客户端 ...

  3. C#字符串与时间格式化

    需要将其它类型的变量,转换为字符串类型的一些常见方法与属性. 字符型转换为字符串 // C 货币 2.5.ToString("C"); // ¥2.50 // D 10进制数 .T ...

  4. LAMPSecurity: CTF6 Vulnhub Walkthrough

    镜像下载地址: https://www.vulnhub.com/entry/lampsecurity-ctf6,85/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202 ...

  5. 阿里云ECS部署Redis主备哨兵集群遇到的问题

    一.部署 详细部署步骤:https://blog.csdn.net/lihongtai/article/details/82826809 Redis5.0版本需要注意的参数配置:https://www ...

  6. 2019/12/11学习内容摘要(Linux系统用户与用户组管理①)

    一,认识/etc/passwd和/etc/shadow 1. /etc/passwd :文件中保存系统中所有的用户和用户的主要信息. 在命令行输入 cat /etc/passwd  | head  ( ...

  7. 分布式Redis的分布式锁 Redlock

    链接 Distributed locks with Redis 引言 之前自己在用redis来实现分布式锁的时候都是基于单个Redis实例,也就是说Redis本身是有单点故障的,Redis的官方文档介 ...

  8. 传统js和jsx与ts和tsx的区别

    一.从定义文件格式方面说 1.传统的开发模式可以定义js文件或者jsx文件2.利用ts开发定义的文件格式tsx二.定义state的状态来说 1.传统的方式直接在构造函数中使用 constructor( ...

  9. C语言搬书学习第一记 —— 认识一个简单程序的细节

    #include<stdio.h> /*告诉编译器把stdio.h 中的内容包含在当前程序中,stdio.h是C编译器软件包的标准部分,它提供键盘输入和 屏幕输入的支持studio.h文件 ...

  10. 【转载】记一次因 Redis 使用不当导致应用卡死 bug 的排查及解决!

    说明:此篇文章 作者分析问题的思路很好,值得学习记录,原文转载自公众号. 首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象 刚开始当测试抱怨环境响应慢的时候 , ...