(完整版)(二)NETOOP面向对象编程的面试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)?

一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现

相关文档
最新文档