DotNet常识点二
20.this关键字在要领中使用时所代表的含义
this指的是当前类的东西,或者父类的类的东西(base只能指向父类的东西)
21.里氏替换原则
子类替换父类地址的位置
22.C#中的数据类型
值类型
简单类型(数字类型(int,short,long,float,double),字符(char),逻辑值(bool)),布局体(struct),枚举(enum)
引用类型
字符串(string),数组[ ],object(所有类的基类),类 class,委托 delegate
23. 值类型变量的初始化(内存分配)
1.类的成员变量
该变量是跟从类的东西存在于堆内存。当东西引用断开时,等着垃圾回收器进行清理时便被销毁
2.要领的局部变量
该变量是在要领被挪用时,存在于栈内存,要领执行完毕后被销毁
24. 担任
1)、为什么要有担任?
A、提高代码的重用性
B、实现多态
2)、担任的局限性
A、一个类只能担任一个父类
B、子类只能担任父类的非私有的成员
3)、当存在担任关系时,子类如何访谒父类的非私有成员
A、base关键字:存在于子类东西里,用来指向父类东西的指针
B、this关键字:获取父类的非私有的成员和本类的成员
25、子类可以强制转换为父类,但父类不能转换为子类
26、is和as的不异和区别?
is是判断,返回类型为bool
as是转换的意思。as只能对引用类型的做转换。as是先判断在转换,先测试转换是否合法,如果合法就转换,否则就返回NULL
不异:都不会抛出异常
27、override与重载的区别
A、重载是要领的名称不异。参数或参数类型差别,进行多次重载以适应差此外需要
B、override是进行基类中函数的重写。为了适应需要
28、override重写的要领的“类型”
虚要领(vritual):必需有要领体
抽象要领(abstract):没有要领体
29、什么是多态?
就是用子类来实例化父类,挪用的是父类的抽象要领/虚要领,但实际执行的是子类实例重写的要领
30、抽象要领只能界说在抽象类中
31、当存在担任关系的时候,创建子类东西的时候不会创建父类东西,只会有一个东西。
例如:Animal a = new Cat();
当new一个子类的时候,有且只有一个子类东西
——————————————————————————————————————————————————————————————————————
而我们经常看到这种说法:new子类时,先创建子类东西,挪用子类的结构要领时,创建父类的东西,挪用父类结构函数最后返回来执行子类结构要领。子类默认挪用父类的无参结构要领,如果父类没有无参的结构要领,则必需显式的挪用————》这是一个很大的误区!
在内存中根柢就无所谓东西的观点!new的时候是按照子类和父类所有静态成员的巨细以及类型指针斥地一个总的空间(该空间不包罗要领),子类和父类的类型指针指向两个类的要领表,所以,子类东西可以访谒到父类和子类的要领。
32、如果子类和父类存在同名但没有重写关系的要领的时候,那么挪用时,如果挪用的是父类变量挪用,,则挪用父类要领,如果是子类变量挪用,则挪用子类要领。如果子类和父类存在同名且有重写关系的要领,那么不管变量是什么类型,挪用的都是子类的要领。
33、虚要领和抽象要领的不异点和差别点:
不异点:
都能被子类重写且都不能为私有的
差别点:
1.abstract和virtual的关键字差别
2.vritual要领必需有实现,哪怕是空实现,而abstract要领必需没有实现
3.virtual要领的子类可以重写父类要领也可以不重写,而抽象要领地址的类的子类必需重写该父类的要领
4.抽象要领必需在抽象类中声明,而虚要领可以存在于任何一个类中
34、抽象类存在的意义:
抽象类存在的目的就是指定法则,而不是具体实现,是为了约束子类的行为,具体实现交给子类来完成。
35、多态的优势:
1.代码的内部各个层之间的关联对照小,彼此之间约束少。(低耦合)
2.要领的成果和职责单一,即一个要领只做一件工作。(高内聚)
3.实现代码的可维护性和可扩展性,便于二次开发
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33007.html