C#面向对象笔记大全.docx_第1页
C#面向对象笔记大全.docx_第2页
C#面向对象笔记大全.docx_第3页
C#面向对象笔记大全.docx_第4页
C#面向对象笔记大全.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一. 交换两个数据的值:1. /创建一个临时变量 /int temp; /temp = num1; /用num2的值覆盖掉num1 /num1 = num2; /将存储在临时变量中的nu1取出来赋值给num2 /num2 = temp;2.不使用临时变量:num1 = num1 + num2; /11 num2 = num1 - num2; /11-6=5;num1 = num1 - num2; /11-5=6二:定义方法:访问修饰符 返回值类型 方法名称(参数)方法体1. 访问修饰符:public private protected internala) public :使用它来定义的成员可以在所有类里面使用(不同项目需要先引用)b) private:私有的,只有在当前类中可以使用c) protected:使用它来定义的成员只有在当前类或者当前类的子类中使用。d) internal:在当前整个程序集中可以使用2. 返回值类型a) void:没有返回值.(可以写return(可以提前终止方法),但是不能return具体的值)b) 非void,必须返回相应类型的值(任何类型都可以做为方法的返回值类型)3. 方法名称:a) Pascal命名法,每一个单词的首字母需要大写b) 不能使用关键字(int double bool string .class namespace)c) 不能包含_以外的特殊符号,不能以数字开头 java(_ $)4. 参数 a) 形参:只是一个参数的声明,说明调用的时候需要传递过来的值(类型一致,个数一致,顺序一致)-形参是实参的规范。Params 三:静态与非静态之间的调用方式:1. 在单个类中:静态不能直接调用非静态成员(属性,方法),只能通过实例化的对象调用。2. 在单个类中:静态可以直接调用静态成员3. 在单个类中:实例成员可以自由调用静态成员(银行 vip-非vip)4. 在不同类中:实例成员通过类的对象调用,而静态成员通过类名调用。5. 为什么静态不能直接调用非静态成员:静态成员与类一起加载,在加载静态成员的时候,非静态成员还没有生成。四:C#Main方法的四种形式:1. static void Main(string args)2. static void Main()3. static int Main(string args)4. static int Main(s)五:可变参数:params:它是一个数组类型的变量。会自动根据用户传递的值生成一个数组(注意传递的值需要同一类型。)1. 可以根据需要传递0 个或者多个参数。2. 如果没有传递任何参数,需要做一个判断,不然可能造成索引越界的错误。六:习惯决定性别,性格决定命运 15天1. 模仿2. 将每一句代码添加上注释3. 删除代码,根据注释重写代码4. 删除注释,重写代码,添加注释七:代码规范:1. 注释:a) / 单行注释 b) /*/:多行注释c) /文档注释:可以生成提示2变量命名:camel:第一个单词首字母小写,后面每一个单词的首字母大写3.对于类和方法:每一个单词首字母都要大写。4.代码需要缩进与对齐。记住:1.在企事业里面可能这有这样的建议:规定所有自定义变量都使用 _ 开头2.变量的名称一般是名词:说明这个变量有什么用3.方法:一般是动词,说明这个方法可以执行什么样的操作4.在定义变量的时候,长短不是关键,意义才是关键八:数组:所有存储结构中效率最高的。因类它在内在中是一串连续的空间1. 如何定义:类型 名称=new int长度;2. 数组里面只能存储同一类型的值3. 在c#中,只能写在类型后面4. 一般需要确定长度或者值,可以同时指定,但是长度与值的数量需要对应。5. 因为数组长度固定,所以对数组的操作一般可以考虑使用for循环结构!6. 数组元素的添加:1. int arrScore = new int51,2,3,4,5;2. arrScore0=1;/如果只为其中某一些下标对应的数组元素赋值那么其它的就会有默认值。3. for (int i = 0; i arrScore.Length; i+) arrScorei=值;7. 数组元素的修改:ArrScorei=值;8. 数组元素的遍历:for (int i = 0; i arrScore.Length; i+)if(arrScorei!=null) /对于引用类型象数组才有用(string)Console.WriteLine(arrScorei);9. 数组元素的删除:/1.先确定需要删除的元素的位置(下标索引)-需要循环遍历 for (int i = 0; i arrScore.Length; i+) if(arrScorei=num) position = i; Console.WriteLine(position:+position); /2.将这个值以后的所有值都往前面移动一位: arri = arri + 1;/需要注意索引是否越界 for (int i = position; i arrScore.Length-1;i+ ) arrScorei = arrScorei + 1; /将后面的元素值覆盖前面元素值 /3.清空最后一个值:注意不同数组类型的默认值,这里因 整型数组的默认是0.所以这里只是清空到0 arrScorearrScore.Length - 1 = 0;九:二维数组和交错数组1. 二维数组a) 定义:int, arr=new int3,4;/必须指定二个维度的值b) 遍历:通过getLength取得维度的长度值:代码如下:for (int i = 0; i twoDArr.GetLength(0);i+ ) for (int j = 0; j twoDArr.GetLength(1);j+ ) Console.Write(twoDArri,j+ ); Console.WriteLine(); 2. 交错数组a) 交错数组的本质就是一个一维数组,只不过这个数组里面的每一个元素值又不一个数组b) 交错数组的元素需要先实例化,因为数组是一个引用类型的变量,需要先实例化再使用,如果没有实例化会出现 “未将对象引用设置到对象的实例”c) 因为交错数组的每一个元素类型是数组,所以遍历的时候就可以按遍历一维数组的方式一考虑,代码如下:int arr=new int2; /数组的每个元素又是一个数组对象,所以需要先实例化数组对象 arr0 = new int 1, 2, 3 ; arr1 = new int 1, 2, 3,4,5,6,7,8,9 ; for (int i = 0; i arr.Length;i+ ) for (int j = 0; j 0 & value = 100) age = value; else age = 18; 5.自动属性:public int Ageget;set;十九:继承1. 如果子类拥有与父类重名的属性和方法的时候,子类的属性和方法会将父类的覆盖掉。如果需要显示调用父类的成员,则需要使用base.不然会默认调用this.2. 创建一个子类对象,默认先会调用父类的无参的构造函数。如果父类没有无参的构造函数,会报错。3. 创建子类对象的时候,也可以指定调用父类的带参的构造函数。Base4. 子类会继承父类的所有成员,但是只能使用公共的,而私有成员不能使用。5. 继承有三大特性:a) 单根性:一个类只能继承自另外一个类b) 传递性:一个类是另外一个类的子类,也可能同时是另外一个子类的父类c) 单向性:不能循环依赖二十:多态的实现:同一种操作,多种不同的相应。1. 声明父类变量,实例化子类对象2. 父类创建虚方法,子类做重写。-子类重写父类的方法 3. 虚方法提供了默认的实现,子类可以不重写,如果子类没有重写,那么就默认调用父提供的方法实现。如果子类重写了,系统会自动判断子类类型,调用子类的重写方法 -这就是多态4. 多态的核心在于:子类可以替换父类,原因:a) 子类拥有父类所规范的所有属性和方法 b) 子类还可以拥有自己特定的属性和方法c) 父类对象可以完成的功能子类对象都可以完成d) 所以,子类可以替换父类。如Person per=new Student();e) Per本质是一个子类对象,但是编译器不知道,所以per只能调用父类里面规范的成员。如果做强制转换,则可以调用到子类成员。5. 如果需要系统自动判断类型,达到多态的目的需要做以下事情:a) 实现继承- 子类是父类b) 父类中声明虚方法(抽象方法),子类做重写(override)c) 声明父类变量,实例化子类对象 / 父类做为参数,传入子类对象。6. 多态实现了避免反复的判断才能达到的效果,这也是多态的好处。方便以后的代码功能的扩展7. 抽象方法:abstract:只是方法的声明,没有方法体,不能包含,但是必须包含 ; 8. 抽象方法的特点 :a) 只有声明b) 它必须在抽象类里面(抽象类里面不仅仅只包含抽象方法)c) 所有子类必须重写父类的抽象方法,除非子类它也是抽象的,抽象类里面可以包含未实现的抽象方法 。d) 抽象方法更多是一种规范,它规范了子类的行为。-接口e) 抽象类不能实例化。9、多态的使用方式:1.声明父类变量,实例化子类对象 -创建父类类型集合2.以父类做为方法的返回值,返回子类对象-简单工厂:用户需要频繁的得到不同的单个子类对象的时候3.以父类类型做为参数,传入子类对象10.如果父子类的方法参数不一样,那它是重载而不是重写。 11.重写要求方法的签名完全一致:访问类型一样,返回值类型一样,方法名称一样,方法的参数一样,只是方法体的实现过程不一样二十一:简单工厂:制作产品:根据用户的需要,每一次制作出一个产品public static Operator CreateOperator(string type) Operator opt = null; if (type = +) opt = new OpAdd(); if (type = -) opt = new SubStract(); if (type = *) opt = new Multi(); if (type = /) opt = new Div(); return opt; 二十二:is/as1. is用来判断引用类型变量的变量是否是某一种类型2. as:来做强制转换,一般()转换,如果不成功,就会报异常,as如果转换不成功会返回NULL,以后,如果不想抛出异常,可以使用as二十三:软件设计中的几个原则:1. 封装变化点2. 开放封闭原则(对修改封闭,对扩展开放)-添加单独的功能添加单独的方法; 添加单独的角色-添加单独的类3. 高内聚,低藕合 -三层-EF MVC二十四:接口:1. 接口本质就是一个抽象类,在接口里面就是声明一系列的属性,方法,索引器和事件。从反编译工具可以看到接口是抽象类-抽象的不能实例化,只能被实现;接口是一个类,说明它也是一种数据类型,可以通过接口创建出接口对象(所谓的接口对象其实是实现该接口的类的对象)2. 创建一个接口对象,其实就是创建一个 实现了这个接口的类 的对象3. 如果某个类没有实现某个接口,那么这个这个类的对象不能强制转换为接口类型。4. 接口不要求实现接口的类有某种关联(只需要有共同的行为),也就是说不要求他们要父子继承关系,方便了用户的拓展。 父类-虚方法/抽象方法-子类重写-多态5. 在公司里面,接口更多的认为是一种规范。6. 使用接口的方式:a) 声明接口类型的变量,存入 实现了接口的类的 对象b) 以接口类型做为参数,传入 实现了接口的类的 对象7. 显示调用接口:显示实现接口的方法需要接口类型的对象才能调用。因类它默认是私有的,而且还不能人为修改为public a) 如果声明的类型就是接口类型,那么可直接调用b) 如果声明的类型是实现了接口的类的类型,那么就需要做强制转换。8. 接口解决了通过继承实现多态的三个问题:a) 通过继承实现多态只能是单继承,但是接口可以多实现b) 通过继承实现多态的类必能够提取出共同的父类,也就说明这些类之间需要有共同的特征和行为。但是接口只需要它们有共同的行为。c) 通过实现了继承的类做为参数传递,会传递类的对象的所有属性和方法,但是通过接口做为参数,只能调用到接口中声明的方法和属性。-更加安全二十五:结构1, 结构是值 类继承自ValueType型2, 它的使用方式和类很相似,但是也有一些区别:a) 结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论