C面向对象编程习题精编.docx
《C面向对象编程习题精编.docx》由会员分享,可在线阅读,更多相关《C面向对象编程习题精编.docx(21页珍藏版)》请在冰豆网上搜索。
![C面向对象编程习题精编.docx](https://file1.bdocx.com/fileroot1/2022-10/22/ac4e594b-d9d8-4d1d-9b63-19c17a37a2a6/ac4e594b-d9d8-4d1d-9b63-19c17a37a2a61.gif)
C面向对象编程习题精编
Documentnumber:
WTT-LKK-GBB-08921-EIGG-22986
C面向对象编程习题精编
C#面向对象编程-多态
1.C#中的方法重写使用关键字()。
a)override
b)overload
c)static
d)inherit
2.以下的C#代码,试图用来定义一个接口:
publicinterfaceIFile{
intA;
intdelFile(){
A=3;
}
voiddisFile();
}
关于以上的代码,以下描述错误的是()。
(选择一项)
a)以上的代码中存在的错误包括:
不能在接口中定义变量,所以intA代码行将出现错误
b)以上的代码中存在的错误包括:
接口方法delFile是不允许实现的,所以不能编写具体的实现函数
c)代码voiddisFile();定义无错误,接口可以没有返回值
d)代码voiddisFile();应该编写为voiddisFile(){};
3.在C#中,接口与抽象基类的区别在于()。
a)抽象基类可以包含非抽象方法,而接口只能包含抽象方法
b)抽象基类可以被实例化,而接口不能被实例化
c)抽象基类不能被实例化,而接口可以被实例化
d)抽象基类就是接口,它们之间无差别
4.在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计,则下面最好的设计应该是()。
a)建立一个新的杂志类Journal。
b)建立一个新的杂志类Journal,并继承TextBoook类。
c)建立一个基类Book和一个新的杂志类Journal,并让Journal类和TextBoook类都继承于Book类。
d)不建立任何类,把杂志图书的某些特殊属性加到TextBoook类中。
5.可以使用()关键字重写方法。
a)Override
b)New
6.()可以看作类的模具。
A.抽象类
B.接口
C.虚方法
7.以下叙述正确的是:
()
A.接口中可以有虚方法。
B.一个类可以实现多个接口。
C.接口不能被实例化。
D.接口中可以包含已实现的方法。
8.下列代码输出为():
classFather{
publicvoidF(){("");}
publicvirtualvoidG(){("");}
}
classSon:
Father{
newpublicvoidF(){("");}
publicoverridevoidG(){("");}
}
classoverride_new{
staticvoidMain(){
Sonb=newSon();
Fathera=b;
();
();
();
();
}
}
A.
B.
C.
D.
9.写出程序的输出结果:
publicclassA
{
publicvirtualvoidFun1(inti)
{
(i);
}
publicvoidFun2(Aa)
{
(1);
Fun1(5);
}
}
publicclassB:
A{
publicoverridevoidFun1(inti)
{
(i+1);
}
publicstaticvoidMain(){
Bb=newB();
Aa=newA();
(b);
(a);
}
}
10.在C#中,允许多接口继承,从多个接口时,使用“:
”后跟继承的接口的名字,多个接口名称之间使用()符号进行分割。
(选择一项)
a)”.’
b)”->”
c)”,”
d)”:
:
”
11.在.NET中,关于组件多态性的陈述,下面除了()都是正确的。
(选择一项)
a可以通过接口实现多态性
b可以通过抽象类实现多态性
c多态性不只是重载或重写,而是智能重写
d在多态性中,需要调用哪个方法的决定是在设计时做出的
12.多态性允许对类的某个方法进行调用而无需考虑该方法所提供的特定实现,例如,可能有名为了Road的类,它调用另一个类的Drive方法,另一个类可能是SportsCar或SmallCar,
但二者都提供Drive方法,虽然Drive方法的实现因类的不同而异,但Road类仍可以调用它,并且它提供的结果可由Road类使用和解释。
在.NET中,可以由以下的方式来实现组件中多态性,除了()。
(选择一项)
a)通过接口实现多态性
b)通过多个不同的子类从单个基类继承实现多态
c)通过抽象类实现多态性
d)通过受保护的成员函数来实现多态性
13.阅读以下的C#代码:
classA
{
publicabstractvoidprintStr(stringstr)
{
(str);
}
}
classB:
A
{
publicoverridevoidprintStr(stringstr)
{
str=str+"(重写的方法)";
(str);
}
}
classDefaultInitializerApp
{
publicstaticvoidMain()
{
Bb=newB();
Aa=b;
("打印");
("打印");
();
}
}
运行程序后将在控制台窗口打印()。
(选择一项)
a.打印重写的方法
b.打印打印重写的方法
c.打印
d.程序有误,不能运行
14.在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进行重载(选一项)
a>override
b>new
c>static
d>virtual
15.对下面的C#程序:
usingSystem;
publicinterfaceIAccount
{
voidPosInterest();
voidDeductFees(intfeeSchedule);
}
classBusinessAccount:
IAccount
{
intA;
publicstaticvoidMain()
{
BusinessAccountB=newBusinessAccount();
;
();
}
publicvoid()
{
A=A+1;
}
publicvoid(intfeeSchedule)
{
A=A+feeSchedule;
}
}
以下的说法正确的是()(选择一项)
a)程序将出现编译错误,指示不能在实现接口BusinessAccount的类中定义成员A.
b)程序将出现编译错误,指示Public关键字对接口项无效
c)程序编译正常,但是出现运行时错误,指示变量A没有初始化
d)程序将正常运行,输出为0
16.可以使用()关键字重写方法。
A.Override
B.new
17.()可以看作类的模具。
A.抽象类
B.接口
C.虚方法
18.请问,此程序输出结果是()
abstractclassBaseClass{
publicvirtualvoidMethodA(){("BaseClass");}publicvirtualvoidMethodB(){}}classClass1:
BaseClass{
publicvoidMethodA(){("Class1");}
publicoverridevoidMethodB(){}
}
classClass2:
Class1{
newpublicvoidMethodB(){}
}
classMainClass{
publicstaticvoidMain(string[]args){Class2o=newClass2();();}}
A.BaseClass
B.BassClassClass1
C.Class1
D.Class1BassClass
19.请问,此程序输出结果是()
publicabstractclassA{publicA(){('A');}
publicvirtualvoidFun(){("()");}}
publicclassB:
A{publicB(){('B');}
publicnewvoidFun(){("()");}
publicstaticvoidMain(){Aa=newB();();}}
A.AB()
B.AB()
C.BA()
D.BA()
20.以下叙述正确的是():
A.接口中可以有虚方法。
B.一个类可以实现多个接口。
C.接口不能被实例化。
D.接口中可以包含已实现的方法。
21.以下关于C#代码的说法正确的是()。
(选择一项)
PublicabstractAnimal
{
PublicabstractvoidEat();
PublicvoidSleep()
{
}
}
a.该段代码正确
b.代码错误,因为类中存在非抽象方法
c.代码错误,因为类中的方法没有实现
d.通过代码“Animalan=newAnimal();”可以创建一个Animal对象
22.在c#中,关于继承和接口,以下说法正确的是()(单选)
a.c#允许许多接口实现,也允许多重继承
#允许多接口实现,但不允许多重继承
#不允许多接口实现,但允许多重继承
#不允许多重接口实现,也不允许多重继承
23)在C#中,已知下列代码的运行结果是“老虎吃动物”,请问在空白处1和空白处2
分别应该填写的代码是()
PublicclassAnimal
{
Public空白处1voidEat()
{
(“我要吃”);
}
}
PublicclassTiger:
Animal
{
Public空白处2voidEat()
{
(“老虎吃动物”);
}
PubliccalssTest
{
StaticvoidMain()
{
Animalan=newTiger();
;
}
}
}
a)Virtual,new
b)override,virtual
c)virtual,override
d)new,virtual
24)在C#中,下列关于抽象类和接口的说法,正确的是)()(选择一项)
a)在抽象类中,所以的方法都是抽象方法
b)继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法
c)在接口中,可以有方法实现,在抽象类中不能有方法实现
d)一个类可以从多个接口继承,也可以从多个抽象类继承
25)关于以下C#代码的说法正确的是()
PublicabstractclassAnimal{
PublicabstractvoidEat();
}
PublicclassTiger