C#语言-04.OOP基础

      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. 接口成员声明不能包含任何修饰符,接口成员默认访问方式是public
                  d. 接口类似于抽象基类,继承接口的任何非抽象类型都必须实现接口的所有成员
                  e. 不能直接实例化接口                                                    
时间: 2024-12-28 17:52:04

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

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

原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd 桌面 1)设置好启动后,断开网络,然后重新启动动计算机,能够用硬盘启动,也能够刻成光盘启动,镜像的下载地址: 进入后找蓝色链接点击下载,如 ubuntu-12.04-desktop-i386.iso,64位CPU能够下载amd64的版本号:http://mirrors.sohu.com/ubuntu-releases/12.04/ WinXP硬盘安

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

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

awk程序设计语言之-awk基础 1 http://man.linuxde.net/ 2 7 8 常用工具命令之awk命令 9 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(stdin).一个或多个文件,或其他命令的输出.它支持用户自定义函数和动态正则表达式 10 等先进功能,是Linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用,awk有很多内建功能,比如数组.函数等,这是它和c语言的相同之处,灵活性 11 是awk最大

黑 马 程 序 员_视频学习总结<C语言>----04 预处理指令

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3.预处理指令可以出现在程序的任何位置,它的

cs108 04 oop design

oop design 分为以下几个方面: - encapsulation and modularity(封装和模块化) - API/Client interface design(API 接口给调用类者) - Inheritance hierarchy and interfaces(继承和继承的层次关系) 这里先介绍一个modularity模块化: 一个大的系统是很复杂的, 可能包含了很多复杂的部分, 如果编码中的一个部分可以独立出来而被其他部分所使用, 例如之前的cs106中的画火车的例子,

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

POJ上做做ACM的题 语言的学习基础,100个经典的算法C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔 子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数 为多少? __________________________________________________________________ 程序分析:兔子的规律为数列1,1,2,3,5,8

Exchange 2016部署实施案例篇-04.Ex基础配置篇(中)

昨天更新了基础配置的上篇<Exchange 2016部署实施案例篇-04.Ex基础配置篇(上)>,欢迎各位老铁多多提出宝贵意见,非常感谢. 虚拟目录 自动发现配置 有的朋友可能知道,虽然在虚拟目录里有自动发现这个选项,但自动发现记录在图形化界面无法配置自动发现地址,如图所示 其实自动发现路径需要使用命令修改,我们先查下现在的自动发现写的是什么鬼 查看自动发现配置情况命令:Get-ClientAccessService | select Name,AutoDiscoverServiceInter

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

至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实现来得实在.程序员应该用代码来沟通,文字只是解释. 到此,感觉算是对groovy完成了入门练习.内部涉及的实现复杂和性能优化,超出目前学习能力范围,后续随着技能的提升可能还会去进一步研究.先到此为止了. 相关代码见项目:https://github.com/islowcity/groovy 项目中有

【Neko C Engine】一个基于 C 语言的游戏基础代码库

原本已经用 C++ 在写着一个游戏代码库了,个人作品,规模很小,只能满足基本的游戏开发需求,后来突发奇想,试着用 C 语言重写了一次自己的游戏代码库,姑且叫做 Neko C Engine 吧,缩写 nkCEngine,基于 Windows 系统,底层封装了 Win32 窗口.D3D.DirectSound 等等,使用的时候不需要操心 Win32 窗口,不需要操心绘图与音效播放的细节,直接一个 C 函数创建对象,然后用对应的 C 函数操作对象: 这个库的最终目标,是希望公开出来给所有对游戏开发感兴