阅读《LEARNING HARD C#学习笔记》知识点总结与…
2018-06-17 21:20:57来源:未知 阅读 ()
今天继续分享我的阅读《LEARNING HARD C#学习笔记》知识点总结与摘要二,仍然是基础知识,但可温故而知新。
七.面向对象
三大基本特性:
封装:把客观事物封装成类,并隐藏类的内部实现细节,仅开放相关的访问属性、方法等
继承:通过继承可以复用父类的代码;
多态:1.允许将子对象赋值给父对象,2.同方法在不同的对象上有不同的实现方式;
子类初始化顺序:初始化类的实例字段à调用父类构造函数à调用子类构造函数;
重写:父类声明为virtual或abstract的类成员(属性、方法),在子类继承时必需使用override关键字进行重实现(虚方法视情况可不重写)。重写一般发生在父类与子类之间;
注意:虚拟成员或抽象成员不能是私有的,且重写时不能改变其访问修饰符(即:虚拟成员或抽象成员若为public,重写时不能改为protected,反之一样是不行的)
重载:相同的方法名称不同的形参类型或个数(注意:返回值类型不能做为重载的依据);
隐藏(覆盖):子类使用new关键字定义父类同名的方法,即可隐藏父类同名的方法,隐藏后,子类外部不能直接访问父类隐藏的方法,若需访问,必须将子类型强制转换成父类型才能正常访问;
所有类的最高层父类都是object类,即所有类都间接派生于object类;
八.接口
- 仅可定义属性、事件、方法、索引器4类成员,且定义的成员不能添加任何访问修饰符,因为默认都为public,子类继承并实现这些成员时也必须定义为public;
- 支持多重继承,可继承多个接口,但不能继承类;
- 可显式实现接口,显示实现的成员默认为私有private,不能添加任何访问修饰符,故不能通过类的对象进行访问,若需访问,则必需将对象的类型强制转换为相应的接口才能正常访问,这与类的隐藏方法类似,显示实现接口方法的语法:接口.接口方法(形参表表) { ..方法实现…}
九.接口与抽象类的区别
1.接口定义关键字为:interface,而抽象类定义关键字为:abstract
2.接口不能定义字段、构造函数、析构函数,不能使用任何访问修饰符(包含static,sealed,virtual等),而抽象类不受限制;
3.接口允许多重继承,而抽象类仅支持单继承;
4.接口一般用来定义通用的行为规范,指示所有继承的类必需具备这些行为,表现为:Can Do,而抽象类一般用来对一类对象的抽象进行描述,指示所有继承的类都属于该抽象类,并具备抽象类的所有特性,表现为:IS;
十.委托
1.委托是一种类型delegate,可以理解为对方法的包装,它使得可以将方法作为参数被传递,相当于C++中的函数指针;
2.委托的定义与方法的定义类似,只是多了一个delegate关键字,定义的语法如下:
访问修饰符 delegate 返回类型 委托名(形参列表);
3.实例化委托必须保证被委托的方法的方法签名(形参个数、顺序、类型)以及返回类型与委托定义相同;
4.委托链:+=表示添加方法到委托链中,-=表示从委托链中移除方法;
事件也是一种委托类型,定义时必需先定义委托类型,然后才能定义事件,事件的定义语法如下:
访问修饰符 event 委托类型 事件名;
事件通过+=订阅事件,-=取消订阅
十一.参数传递
默认情况下,值类型在方法中是按值传递,即将实参的值复制给形参,两者中任何一个的值改变不会改变另一个的值;
引用类型在方法中是按引用传递,即实参将变量的的引用地址传递给形参,两者均指向同一个对象,任何一个的值改变,则另一个也会变化;(字符串虽为引用类型,但由于其特殊性,默认情况下,在方法中是按值传递)
通过添加rel或out关键字来显式实现参数(不论任何类型)按引用类型传递,其中使用rel关键字时,实参必需先初始化,而out关键字则没有此要求;
十二.泛型
泛型代表的就是通用类型,它可以代表任意类型,使类型参数化,从而实现同一个方法可以操作不同的类型的目的;
泛型解决了类型之间装箱与拆箱的问题;
浮型约束采用where 关键字,如:where T:class,约束是为了将泛型的类型具体化。
约束种类如下:
引用类型约束(T:class),确保传递的类型实参必须为引用类型;
值类型约束(T:struct),确保传递的类型实参必须为值类型(不包括可空类型);
构造函数约束(T:new()),确保传递的类型实参必须有公共的无参构造函数,此约束适用所有非静态、非抽象的包含无参构造函数的类型(值类型与引用类型),如果有多个约束,则此约束必须放在最后面;
转换类型约束(T:基类名,T:接口名,T:U),确保传递的类型实参必须是继承该约束的类或接口;
组合约束,包含多个约束;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 网络编程相关知识点 2019-08-13
- Python之路【第九篇】:Python面向对象 2019-07-24
- day06 2019-05-16
- Python之路【第八篇】:Python模块 2019-04-25
- 【Python实践-1】求一元二次方程的两个解 2019-04-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash