a. OOP:面对对象思想i. 类:是一种功能强大的数据类型,而且是面向对象的基础1. 语法:访问修饰符 class 类名{ //类的主体 }2. 成员变量:不以“函数”形式体现a. 常量:代表与类相关的常量值b. 变量:类中的变量c. 事件:由类产生的通知,用于说明发生了什么事件d. 类型:属于类的局部类型3. 成员函数:以“函数”形式体现a. 方法:完成类中各种计算或功能的操作,不能和类同名、不能和类中其他成员同名b. 属性:定义类的值,并对它们提供读、写操作c. 索引指示器:允许编程人员在访问数组时,通过索引指示器访问类的多个实例,又称下标指示器d. 运算符:定义类对象能使用的操作符e. 构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作,构造函数必须和类名相同f. 析构函数:在类被删除之前最后执行的函数,主要是完成对象结束时的收尾操作,必须和类名相同,并前加一个“~”波浪线符号ii. 构造函数:是类中一种特殊的方法,特点是 它的方法名与类名相同、没有返回类型和主要完成初始化工作。1. 隐式构造函数:默认的情况下,系统将会给类分配一个无参数的构造函数,并且没有方法体,但要注意一旦类有了构造函数,就不再自动分配构造函数了2. 无参构造函数:实例化时不需要给类的属性赋值3. 带参构造函数:实例化时需要给类的属性赋值,实例化时一定要使传入的参数和带参构造函数的参数列表相对应4. 方法重载:是指在同一个类中,方法名相同,而参数类型和参数个数不同。在同一个类中,构造函数和变通方法都可以重载iii. 封装:指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能隐藏内部的细节,只保留一些对外接口,使之与外部发生联系,保存对象自身数据的完整性和安全性1. 好处:a. 保证数据的安全性b. 提供清晰的对外接口c. 类内部实现可以任意修改,不影响其他类iv. 继承:建立类之间的关系,实现代码的利用,方便系统的扩展,继承必须符合 is a 的关系,被继承的类称为父类或者基类,继承其他类的类称为子类或者派生类1. 子类构造函数a. 隐式调用父类构造函数i. 创建子类对象时会首先调用父类的构造函数,然后才会调用子类本身的构造函数,由于没有指明要调用父类的哪一个构造函数,所有系统隐式地调用了父类的无参数构造函数b. 显式调用父类构造函数i. 通过 base 关键字调用父类的构造函数进行初始化ii. 注意:base 关键字调用父类的构造函数时,只能传递参数iii. 如果父类没有无参数的构造函数,那子类必须要使用 base 关键字来调用父类相应的构造函数,否则因为父类没有无参构造函数的原因而报错2. 特性:a. 传递性:如果 A 继承 B 和 B 继承 C,则 A 也就继承了 C ,A可以访问 C 的成员b. 单根性:一个类不能够同时继承自多个父类3. 特点:a. 继承模拟了现实世界的关系,OOP 中强调一切皆对象,这符合我们面向对象编程的思考方向b. 继承实现了代码的重用c. 继承使得程序结构清晰,子类和父类的层次结构清晰v. 多态:相同的方法调用可实现不同的实现方式1. 使用虚方法实现多态a. 创建父类变量,用子类对象实例化这个父类变量b. 把父类类型作为参数类型,它的子类对象作为参数传入2. 里式替换原则:子类可以替换父类并且出现在父类能够出现的任何地方,且程序的行为不会发生变化,但是反过来,父类对象是不能替换子类对象的a. Is 关键字:用于检查对象和指定的类型是否兼容b. as 关键字:用于两个对象之间的类型转换3. 抽象方法是一个没有实现的方法,通用在定义方法时增加关键字 abstract 可以声明抽象方法a. 语法:访问修饰符  abstract 返回类型  方法名();i. 注意:抽象方法没有闭合的大括号,而是直接跟了一个分号“;”,也就是说,它没有包括方法执行逻辑的方法体b. 与虚方法的区别虚方法                             抽象方法用 virtual 修饰                        用 abstract 修饰要用方法体,哪怕是一个分号     不允许有方法体可以被子类 override 必须被子类 override除了密封类外都可以写               只能在抽象类中写4. 抽象类:含有抽象方法的类必然是抽象类a. 语法:访问修饰符  abstract class  类名;b. 抽象类不能被实例化c. 抽象类不能是密封或者静态的i. 接口:接口继承允许将一个方法的名称和它的实现彻底的分离1. 语法:[访问修饰符] interface  接口名[:父接口名列表]{  //接口体  }2. 注意:a. 接口仅仅提供成员的声明,并不提供成员的实现b. 接口成员只能是方法、属性、索引指示器和事件,不能是常量、域、操作符、构造函数或析构函数,不能包含任何静态成员c. 接口成员声明不能包含任何修饰符,接口成员默认访问方式是publicd. 接口类似于抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员e. 不能直接实例化接口                                                    

转载于:https://www.cnblogs.com/WesleyLiang/p/7533246.html

C#语言-04.OOP基础相关推荐

  1. 如何用c语言读取硬盘串号_如何用C语言实现OOP

    我们知道面向对象的三大特性分别是:封装.继承.多态.很多语言例如:C++和Java等都是面向对象的编程语言,而我们通常说C是面向过程的语言,那么是否可以用C实现简单的面向对象呢?答案是肯定的!C有一种 ...

  2. java 168转换成861_java实验-java语言面向对象编程基础

    java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...

  3. iOS学习笔记-105.多线程04——CGD基础

    多线程04CGD基础 一CGD简介 1 什么是GCD 2 GCD的优势 二任务和队列 1 GCD中有2个核心概念 2 GCD的使用就2个步骤 三执行任务 1 执行任务的方法 2 同步和异步的区别 3 ...

  4. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

  5. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  6. Maven-学习笔记04【基础-Maven生命周期和概念模型图】

    Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...

  7. JQuery-学习笔记04【基础——JQuery基础案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] JQuery-学习笔记01[基础--JQuery基础]--[day01] JQuery-学习笔记02[基础--JQuery选择器] JQuery-学习 ...

  8. 语言的学习基础,100个经典的算法

    POJ上做做ACM的题 语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生 ...

  9. 《C语言编程——零基础初学者指南(第3版)》一第1章 什么是C程序设计1.1 什么是程序...

    本节书摘来自异步社区<C语言编程--零基础初学者指南(第3版)>一书中的第1章,第1.1节,作者 [美]Greg Perry , Dean Miller,更多章节内容可以访问云栖社区&qu ...

  10. c语言编程基础课件,第7章_C语言图形编程基础课件

    第7章_C语言图形编程基础课件 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及时地改变自己的内在组织结构,以适应客观发展的需要. 狭义的组织变革是指组织根据外部环境的变化和内部情况的变化及 ...

最新文章

  1. 【BZOJ】1572: [Usaco2009 Open]工作安排Job
  2. 关于Git和Github你不知道的十件事
  3. ArrayMap java.lang.ArrayIndexOutOfBoundsException
  4. Java任何一个元素都可以转换成String类型
  5. Acwing第 30 场周赛【完结】
  6. 今日arXiv精选 | 15篇EMNLP 2021最新论文
  7. jq之animate() left font
  8. 处理移动端pdf展示问题
  9. Maven的核心笔记(2)原生:HelloWorldMaven
  10. 【转】企业网站建设方法论
  11. 第三课--AMP架构双核应用程序开发和软中断处理(一)
  12. 给Ubuntu安装MacOS主题
  13. 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
  14. 三菱系统刀库乱刀处理_FANUC系统对圆盘式刀库现场操作及调试
  15. mesh和wifi中继的区别_科普:路由器的无线中继和Mesh的区别是什么?
  16. Mac设置右键用VSCode打开文件和文件夹
  17. Type-C PD充电简介
  18. Downward paths(数论,思维)
  19. 一个人的精神结构和他的精神资源
  20. 关于De-pCode在线工具失效的问题

热门文章

  1. 自动化CodeReview - ASP.NET Core请求参数验证
  2. 如何使用 Java8 实现观察者模式?(上)
  3. linux 搭建LAMP平台手册
  4. 使用开源软件 Mantis 实施缺陷跟踪的成功实践
  5. 为何virtual析构函数不能是protected?
  6. MQ(队列消息的入门)
  7. 今天晴儿和老佛爷又一起上台了
  8. python_三目运算
  9. vue.js MVVM模式介绍及案例
  10. 简单了解Tomcat与OSGi的类加载器架构