(完整版)(二)NETOOP面向对象编程的面试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(二).NET OOP 面向对象编程
1. 面向对象的三大基本原则?
封装,继承,多态。
(1) 封装:隐藏内部实现,稳定外部接口;好处:保证对象自身数据的完整性和安全性
(2) 继承:子类继承父类的成员;好处:实现代码复用,方便系统的扩展
(3) 多态:A:不同子类对象同一个消息(方法调用);做出不同的反映;
B:同一个类在不同情况下表现出不同的行为。
静态方法和实例方法:
(1)静态方法里面不能直接调用实例方法(不能直接写方法名),需要实例化对象,然后再用对象.
方法名去调用。静态方法中不能用this关键字直接调用实例方法。
(2) 实例方法里面可以直接使用静态方法
(直接写静态方法名)
2 .传入某个属性的set(设置器)方法的隐含参数的名称是什么?
value,它的类型和属性所声名的类型相同。
3. c#中字段和属性的区别
字段是变量;属性是对字段的封装,对外提供的访问,保证数据的安全
4 .请叙述属性与索引器的区别。
属性 a 通过名称标识
b 通过简单名称或成员访问来访问。
c 可以为静态成员或实例成员
d 属性的get 访问器没有参数
e 属性的set 访问器包含隐式value参数
索引器 a 通过签名标识。
b 通过元素访问来访问。
c 必须为实例成员。
d 索引器的get 访问器具有与索引器相同的形参表
e 除了value 参数外,索引器的set 访问器还具有与索引器相同的形参表
5. 如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
6. C#支持多重继承么?
不支持多继承。可以用接口来实现。
7. 被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。
8.私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
9.简述 private、 protected、 public、 internal 修饰符的访问权限。
private:私有成员, 在类的内部才可以访问。
Protected:保护成员,该类内部和继承类中可以访问。
public :公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内(同一个程序集中)可以访问。
10. 可访问性级别有哪几种?
public 访问不受限制。
protected 访问仅限于包含类或从包含类派生的类型。
internal 访问仅限于当前程序集。
protected internal 访问仅限于从包含类派生的当前程序集或类型。
private 访问仅限于包含类型。
11.请描述一下修饰符protected internal。
被protected internal修饰的属性方法只能在它的在同一个
程序集(Assembly)中的子类被访问。
12. C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,
还想保留这个无参数的构造函数。这样我应该写几个构造函数?
两个,一旦你实现了一个构造函数C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。
13. C#中所有对象共同的基类是什么?
System.Object.
14 . 重载Overload 和覆写Override(重写)有什么区别?
(1)重载:针对一个类来说,当定义两种或多种具有相同名称的方法时,就称作重载。
只要方法名相同,别的可以不同,方法的重载一般满足2个条件
⑴返回类型相同,参数类型相同,参数个数不同;
⑵返回类型不同,参数类型不同,参数个数相同
⑶参数加ref或者out,与不加ref或out也可以构成重载,但是参数加ref和out不能同时一起构
成重载的。
(2) 重写:一般用于有继承关系的类(针对多个类),多数情况下是父类中有抽象方法或者虚方法,在
子类中使用override关键字重写父类的方法,而且重写方法的名称,方法的返回类型,参数类型,参数个数都要和基类一致。
15. 在方法定义中,virtual(虚有的方法)有什么含意?
被virtual修饰的方法可以被子类覆写。
16 .能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
17 .可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。
18 .能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。(密封类:不能被其他类继承)
19 sealed关键字有什么特点?
sealed 修饰符可以应用于类、实例方法和属性。
修饰类,那么此类不能被继承,密封类不能被继承。
密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。
当应用于方法或属性时sealed 修饰符必须始终与override 一起使用。
20.能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记这个类为public,并标记这个方法为sealed。
21 . 什么是抽象类(abstract class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现