一、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. 《Java基础知识》Java Lambda表达式

    接触Lambda表达式的时候,第一感觉就是,这个是啥?我居然看不懂,于是开始寻找资料,必须弄懂它. 先来看一个案例: @FunctionalInterface public interface MyL ...

  2. 语句知识总结(js)

    函数声明语句和函数定义表达式有什么不同 首先看一下函数声明语句和函数定义表达式的例子,表达式会返回一个值,而语句就是js中的一整句,下面例子中第6行是函数声明语句,第10行是函数定义表达式. f(); ...

  3. Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法

    最近无法通过SSH连接Linux服务器,访问该服务器上的HTTP服务也出现异常.可以ping,但是telnet端口超时,网站wget超时,访问超时. 最后排查是内核配置问题 原来是 net.ipv4. ...

  4. Java基础语法09-面向对象下-内部类

    九.内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. (1)成员内部类:声明在外部类中方法外 静态成员内部类 非静态成员内部类 (2)局部内部类:声明在外部类的方法 ...

  5. python:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes问题解决

    有如下一个文件,内容如下 { "test1": "/root/test/test1.template", "test2": "/r ...

  6. BOM对象——History

    BOM对象--History <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. UiPath Read CSV 中文乱码

    问题:UiPath 读取.CSV文件时,出现中文乱码. 解决1: 修改CSV文件的编码为UTF-8 解决2: 设置Read CSV Activity的 encoding属性为csv相应的编码格式 参考 ...

  8. windows + flutter +android+ vscode 安装配置运行流程(详细版本)

    flutter 是由谷歌发布的一个全新的响应式.跨平台.高性能的移动开发框架,可以快速在iOS和Android上构建高质量的原生用户界面. 框架特点 快速开发:Flutter的热重载可以快速地进行测试 ...

  9. DDMS files not found: xxx\hprof-conv.exe

    出现如下错误: DDMS files not found: xxx\hprof-conv.exe The connection to adb is down, and a severe error h ...

  10. Cortex-A7处理器算数运算指令和逻辑运算指令

      汇编中也可以进行算术运算, 比如加减乘除,常用的运算指令用法如表所示: 常用运算指令 在嵌入式开发中最常会用的就是加减指令,乘除基本用不到. 我们用 C 语言进行CPU 寄存器配置的时候常常需要用 ...