C/C++培训
达内IT学院
400-996-5531
1、 Sealed关键字
1) Sealed修饰类定义时:
表示该类永远不能被继承,因此称之为封闭类,当封闭类中存在虚函数时,Virtual关键字将不在生效。
例如:publicsealedclass C{} 那么C类不能被继承。
2) Sealed修饰方法或者属性时:
防止子类重写父类虚方法或者虚属性。
2、 类继承和接口继承的区别
1) 类继承
派生类继承基类所有属性和方法,而且一个派生类只能有一个基类,System.Object是所有类型的基类。
2) 接口继承
派生类之继承了接口的方法,而且接口本身并未实现,具体的实现实在派生类的实现的,而且派生类可以同时继承多个接口。
3) 组合继承
派生类可以同时继承类和接口,而且可以继承多个接口,当然类却只能继承一个。
3、 Abstract和Virtual的区别
1) Virtual 虚方法:可以重写可以不写
a) 在基类中定义了Virtual方法,但是在派生类中没有重写该方法,那么在派生类的实例调用中,该方法使用的是基类定义的方法。
b) 在基类中定义了Virtual方法,然后在派生类中使用override重写了该方法,那么在对派生类的实例调用中,该虚方法调用派生类重写的方法。
2) Abstract 抽象方法:必须重写
a) Abstract只能在抽象类中修饰方法,并且没有具体的实现,抽象方法的实现必须在派生类中使用override关键字来实现。
3) 理解:
Virtual想当与C++中的虚函数,所以子类继承后,可以实现,也可以不实现,但是Abstract方法,相当于C++中的纯虚函数,子类必须实现,否则不能实例化对象。
4、 Ref和out的区别
两者都是表示值类型按照引用类型来传递
1) Ref
在参数传递之前必须初始化
2) Out
在参数传递前不必初始化,且在传递时(被调用方法返回之前)必须显示赋值,否则编译错误。
5、 New的作用
1) 作为运算符,用于创建对象和调用构造函数
例如:
Class Person { …… } Person aPerson = newPerson();
2) 作为运算符,用于向基类成员隐藏继承成员
例如:
Class A { Public static intI =123; Public virtual void showinfo() { Console.WriteLine(“base class….”); } Public virtual void ShowNumber() { Console.WriteLine(i.Tostring()); } } Class B:A { New public staticint I = 456; Public new virtual viod ShowInfo { Console.WriteLine(“Derived class……”); } Public override void showNum() { Console.WriteLine(i.Tostring()); } }
3) 作为约束, 用与在泛型声明中约束可能用作类型参数的参数类型
4) 使用new实现多态
5) 要点:
a) New一个class时,new完成了两个方面的内容,一个调用newobj命令来未实例在托管堆中分配内存,而是调用构造函数来实现对象的初始化。
b) New一个struct时,new运算符用于调用其构造函数,完成实例的初始化。
c) New一个int时,new运算符用处于初始化为0
d) New运算符不能重载
e) New分配内存失败,引发OutMemoryException异常
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved