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

C#语言-04.OOP基础的更多相关文章

  1. [分享]Ubuntu12.04安装基础教程(图文)

    [分享]Ubuntu12.04安装基础教程(图文) 原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd ...

  2. 面向对象(OOP)--OOP基础与this指向详解

      前  言            学过程序语言的都知道,我们的程序语言进化是从“面向机器”.到“面向过程”.再到“面向对象”一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐 ...

  3. [Java 教程 04] Java基础语法

    在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...

  4. awk程序设计语言之-awk基础

    awk程序设计语言之-awk基础 http://man.linuxde.net/ 常用工具命令之awk命令 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(s ...

  5. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  6. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

  7. Unity 3D开发-C#脚本语言的一些基础用法

    Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- 线 ...

  8. Ext OOP基础

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. C#语言和数据库基础

    第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...

随机推荐

  1. Android源码:(一) 安卓2.1到4.4操作系统通用的Actionbar实现的tab导航例子。

    说一下我在完成这个例子之前的尝试吧 一,修改“actionbarsherlock”的导航例子.我在实现这个例子之前,尝试过“actionbarsherlock”,修改它的一个tab导航的例子,修改成功 ...

  2. opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程

    很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...

  3. const 与define 创建符号常量的 用法与区别

    一.define 的用法: 在c语言中我经常会看到 :#define  PI  12 ,这是创建了一个符号常量,这里面要注意没有那个等于号“=”: 二.const 的用法: 1.const 也可以来创 ...

  4. 6.iptables常用规则

    开启ip段192.168.1.0/24端的80口 开启ip段211.123.16.123/24端ip段的80口 # iptables -I INPUT -p tcp --dport 80 -j DRO ...

  5. vue.js 知识点(四)

    看完了vue.js的官方文档,大概对这些知识有了那么一点的了解了,但是很多具体的运用还不太清楚,现在就总结一下,关于其中的一些知识点的运用: v-bind:  动态绑定指令,默认情况下,是给html ...

  6. Openfire服务端源代码开发配置指南[转]

    转自:http://www.micmiu.com/opensource/openfire/openfire-src-config/   本文将图文介绍如何把openfire(以3.8.1为例)源码配置 ...

  7. Python解释器的配置

    1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...

  8. dynamics crm 365 附件上传图片并且显示。

    参考了几篇博客做的: 新增websource文件(html): <!DOCTYPE html> <html> <head> <title>注释</ ...

  9. Locust 基本使用

    Locust 使用Python代码来定义用户行为,用它可以模拟百万级的并发用户来访问系统. 与其他性能工具对比如下: LoadRunner 商业性能测试工具,报告完整,不支持二次开发 开发语言:C/J ...

  10. java实现图片文字识别的两种方法

    一.使用tesseract-ocr 1.    https://github.com/tesseract-ocr/tesseract/wiki上下载安装包安装和简体中文训练文件 window64位安装 ...