继承和接口设计习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章继承和接口设计

一.选择题

1.在C#中,一个类【】。

A) 可以继承多个类B) 可以实现多个接口

C) 在一个程序中只能有一个子类D) 只能实现一个接口

2.【】关键字用于在C#中从派生类中访问基类的成员。

A) new B) super C) this D) base 3.在定义类时,若希望类的某个方法能够在派生类中进一步改进,以满足派生类的不同需要,则应将该方法声明为【】。

A) new B) public C) virtual D) override

4.在C#中,在派生类中对基类的虚方法进行重写,要求在派生类的声明中使用【】。

A) new B) public C) virtual D) override

5.已知类B是由类A继承而来,类A中有一个名为M的非虚方法,现在希望在类B中也定义一个名为M的方法,且两方法的参数个数和类型完全相同,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用【】关键字。

A) static B) new C) override D) virtual 6.假设类B继承了类A,下列说法错误的是【】。

A) 类B中的成员可以访问类A中的公有成员

B) 类B中的成员可以访问类A中的保护成员

C) 类B中的成员可以访问类A中的私有成员

D) 类B中的成员可以访问类A中的静态成员

7.关于多态,下列说法正确的是【】。

A) 多态实际上就是重载,它们本质上是以一样的

B) 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成

员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。

C) 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在

编译时就能确定要调用成员方法的哪个版本。

D) 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现,

后者是通过对同一函数名编写多个不同的实现代码来实现。

8.下列关于接口的说法,正确的是【】。

A) 接口中定义的方法都必须是虚方法

B) 接口中定义的方法可以编写其实现代码

C) 继承接口的类可提供被继承接口中部分成员的实现代码

D) 接口中的所有方法都必须在其派生类中得到实现。

9.下列关于虚方法的描述中,正确的是【】。

A) 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活

B) 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符

C) 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符

D) 在重写基类的虚方法时,需要同时带上virtual和override修饰符

10.在C#中,以下关于抽象类的叙述中错误的是【】。

A) 抽象类可以包含抽象方法B) 含有抽象方法的类一定是抽象类

C) 抽象类不能被实例化D) 抽象类可以是密封类

11.在C#中,以下关于抽象类和接口的叙述中正确的是【】。

A) 抽象类可以包含非抽象方法,而接口不包含任何方法的实现

B) 抽象类可以被实例化,而接口不能被实例化

C) 抽象类不能被实例化,而接口可以被实例化

D) 抽象类能够被继承,而接口不能被继承

12.在C#中,以下关于抽象类和接口的叙述中正确的是【】。

A) 在抽象类中,所有的方法都是抽象方法

B) 继承自抽象类的子类必须实现其父类(抽象类)中的所有抽象方法

C) 在接口的定义中可以有方法实现,在抽象类的定义中不能有方法实现

D) 一个类可以从多个接口继承,也可以从多个抽象类继承

13.以下类和接口的区别中正确的是【】。

A) 类可以继承而接口不可以B) 类不可以继承而接口可以

C) 类可以多继承而接口不可以D) 类不可以多继承而接口可以

14.下列方法定义中,【】是抽象方法。

A) static void func(){ } B) virtual void func(){ }

C) abstract void func(){ } D) overridel void func(){ } 15.下列关于接口的说法,错误的是【】。

A) 一个类可以有多个基类和多个基接口B) 抽象类和接口都不能被实例化

C) 抽象类自身可以定义成员,而接口不可以D) 类不可以多重继承,而接口可以。16.已知类Base、Derived的定义如下:

class Base

{ public void Hello()

{ in Base!”); }

}

class Derived: Base

{ public new void Hello()

{ i n Derived!”); }

}

则下列语句段在控制台中的输出结果是【】。

Derived x=new Derived();

();

A) Hello in Base! B) Hello in Base! Hello in Derived!

C) Hello in Derived! D) Hello in Derived!Hello in Base!

17.关于继承,下列说法正确的是【】。

A) 子类将继承父类所有的成员B) 子类将继承父类的非私有成员

C) 子类只继承父类public成员D) 子类只继承父类的方法,而不继承属性

18.下列是抽象类的声明的是【】。

A) abstract class figure{ } B) c lass abstract figure{ }

相关文档
最新文档