第6章 继承和接口设计

一.选择题
1.在C#中,一个类【 D 】。
A) 可以继承多个类 B) 可以实现多个接口
C) 在一个程序中只能有一个子类 D) 只能实现一个接口
2.【 D 】关键字用于在C#中从派生类中访问基类的成员。
A) new B) super C) this D) base
3.在定义类时,若希望类的某个方法能够在派生类中进一步改进,以满足派生类的不同需要,则应将该方法声明为【 C 】。
A) new B) public C) virtual D) override
4.在C#中,在派生类中对基类的虚方法进行重写,要求在派生类的声明中使用【 D 】。
A) new B) public C) virtual D) override
5.已知类B是由类A继承而来,类A中有一个名为M的非虚方法,现在希望在类B中也定义一个名为M的方法,且两方法的参数个数和类型完全相同,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用【 B】关键字。
A) static B) new C) override D) virtual
6.假设类B继承了类A,下列说法错误的是【 C 】。
A) 类B中的成员可以访问类A中的公有成员
B) 类B中的成员可以访问类A中的保护成员
C) 类B中的成员可以访问类A中的私有成员
D) 类B中的成员可以访问类A中的静态成员
7.关于多态,下列说法正确的是【 B 】。
A) 多态实际上就是重载,它们本质上是以一样的
B) 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。
C) 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本。
D) 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一函数名编写多个不同的实现代码来实现。
8.下列关于接口的说法,正确的是【 D 】。
A) 接口中定义的方法都必须是虚方法
B) 接口中定义的方法可以编写其实现代码
C) 继承接口的类可提供被继承接口中部分成员的实现代码
D) 接口中的所有方法都必须在其派生类中得到实现。
9.下列关于虚方法的描述中,正确的是【A 】。
A) 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活
B) 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符
C) 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符
D) 在重写基类的虚方法时,需要同时带上virtual和override修饰符
10.在C#中,以下关于抽象类的叙述中错误的是【 D 】。
A) 抽象类可以包含抽象方法 B) 含有抽象方法的类一定是抽象类
C) 抽象类不能被实例化 D) 抽象类可以是密封类
11.在C#中,以下关于抽象类和接口的叙述中正确的是【A 】。
A) 抽象类可以包含非抽象方法,而接口不包含任何方法的实现
B) 抽象类可以被实例化,而接口不能被实例化
C) 抽象类不能被实例化,而接口可以被实例化
D) 抽象类能够被继承,而接口不能被继承
12.在C#中,以下关于抽象类和接口的叙述中正确的是【 B 】。
A) 在抽象类中,所有的方法都是抽象方法
B) 继承自抽象类的子类必须实现其父类(抽象类)中的所有抽象方法
C) 在接口的定义中可以有方法实现,在抽象类的定义中不能有方法实现
D) 一个类可以从多个接口继承,也可以从多个抽象类继承
13.以下类和接口的区别中正确的是【 D 】。
A) 类可以继承而接口不可以 B) 类不可以继承而接口可以
C) 类可以多继承而接口不可以 D) 类不可以多继承而接口可以
14.下列方法定义中,【C 】是抽象方法。
A) static void func(){ } B) virtual void func(){ }
C) abstract void func(){ } D) overridel void func(){ }
15.下列关于接口的说法,错误的是【 aA 】。
A) 一个类可以有多个基类和多个基接口 B) 抽象类和接口都不能被实例化
C) 抽象类自身可以定义成员,而接口不可以 D) 类不可以多重继承,而接口可以。
16.已知类Base、Derived的定义如下:
class Base
{ public void Hello()
{ System.Console.Write(“Hello in Base!”); }
}
class Derived: Base
{ public new void Hello()
{ System.Console.Write(“Hello in Derived!”); }
}
则下列语句段在控制台中的输出结果是【 C 】。
Derived x=new Derived();
x.Hello();
A) Hello in Base! B) Hello in Base! Hello in Derived!
C) Hello in Derived! D) Hello in Derived!Hello in Base!
17.关于继承,下列说法正确的是【A 】。
A) 子类将继承父类所有的成员 B) 子类将继承父类的非私有成员
C) 子类只继承父类public成员 D) 子类只继承父类的方法,而不继承属性
18.下列是抽象类的声明的是【 A 】。
A) abstract class figure{ } B) class abstract figure{ }
C) seald class figure{ } D) static class figure{ }
19.abstract修饰的方法是抽象方法,抽象方法只有声明而无主体,且【A 】。
A) 只能存在于抽象类中 B) 可以在任何类中
C) 只能在接口中 D) 只能在密封类中
20.重写一个基类的虚方法时,应与原虚方法的方法名相同,并且【 A】。
A) 不能改变方法的参数类型、个数和返回值
B) 可以改变方法的参数类型、个数和返回值
C) 可以改变方法的

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值