C#面向对象编程-多态1.C#中的方法重写使用关键字()。a)overrideb)overloadc)staticd)inherit2.以下的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)Overrideb)New6.()可以看作类的模具。A.抽象类B.接口C.虚方法7.以下叙述正确的是:()A.接口中可以有虚方法。B.一个类可以实现多个接口。C.接口不能被实例化。D.接口中可以包含已实现的方法。8.下列代码输出为():classFather{publicvoidF(){Console.WriteLine(A.F);}publicvirtualvoidG(){Console.WriteLine(A.G);}}classSon:Father{newpublicvoidF(){Console.WriteLine(B.F);}publicoverridevoidG(){Console.WriteLine(B.G);}}classoverride_new{staticvoidMain(){Sonb=newSon();Fathera=b;a.F();b.F();a.G();b.G();}}A.A.FB.FA.GB.GB.A.FB.FB.GB.GC.A.FA.FB.GB.GD.B.FB.FB.GB.G9.写出程序的输出结果:publicclassA{publicvirtualvoidFun1(inti){Console.WriteLine(i);}publicvoidFun2(Aa){a.Fun1(1);Fun1(5);}}publicclassB:A{publicoverridevoidFun1(inti){base.Fun1(i+1);}publicstaticvoidMain(){Bb=newB();Aa=newA();a.Fun2(b);b.Fun2(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){Console.WriteLine(str);}}classB:A{publicoverridevoidprintStr(stringstr){str=str+(重写的方法);Console.WriteLine(str);}}classDefaultInitializerApp{publicstaticvoidMain(){Bb=newB();Aa=b;a.printStr(打印);b.printStr(打印);Console.ReadLine();}}运行程序后将在控制台窗口打印()。(选择一项)a.打印重写的方法b.打印打印重写的方法c.打印d.程序有误,不能运行14.在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进行重载(选一项)aoverridebnewcstaticdvirtual15.对下面的C#程序:usingSystem;publicinterfaceIAccount{voidPosInterest();voidDeductFees(intfeeSchedule);}classBusinessAccount:IAccount{intA;publicstaticvoidMain(){BusinessAccountB=newBusinessAccount();Console.WriteLine(B.A);Console.ReadLine();}publicvoidIAccount.PostInterest(){A=A+1;}publicvoidIAccount.DeductFees(intfeeSchedule){A=A+feeSchedule;}}以下的说法正确的是()(选择一项)a)程序将出现编译错误,指示不能在实现接口BusinessAccount的类中定义成员A.b)程序将出现编译错误,指示Public关键字对接口项无效c)程序编译正常,但是出现运行时错误,指示变量A没有初始化d)程序将正常运行,输出为016.可以使用()关键字重写方法。A.OverrideB.new17.()可以看作类的模具。A.抽象类B.接口C.虚方法18.请问,此程序输出结果是()abstractclassBaseClass{publicvirtualvoidMethodA(){Console.WriteLine(BaseClass);}publicvirtualvoidMethodB(){}}classClass1:BaseClass{publicvoidMethodA(){Console.WriteLine(Class1);}publicoverridevoidMethodB(){}}classClass2:Class1{newpublicvoidMethodB(){}}classMainClass{publicstaticvoidMain(string[]args){Class2o=newClass2();o.MethodA();}}A.BaseClassB.BassClassClass1C.Class1D.Class1BassClass19.请问,此程序输出结果是()publicabstractclassA{publicA(){Console.WriteLine('A');}publicvirtualvoidFun(){Console.WriteLine(A.Fun());}}publicclassB:A{publicB(){Console.WriteLine('B');}publicnewvoidFun(){Console.WriteLine(B.Fun());}publicstaticvoidMain(){Aa=newB();a.Fun();}}A.ABA.Fun()B.ABB.Fun()C.BAA.Fun()D.BAB.Fun()20.以下叙述正确的是():A.接口中可以有虚方法。B.一个类可以实现多个接口。C.接口不能被实例化。D.接口中可以包含已实现的方法。21.以下关于C#代码的说法正确的是()。(选择一项)PublicabstractAnimal{PublicabstractvoidEat();PublicvoidSleep(){}}a.该段代码正确b.代码错误,因为类中存在非抽象方法c.代码错误,因为类中的方法没有实现d.通过代码“Animalan=newAnimal();”可以创建一个Animal对象22.在c#中,关于继承和接口,以下说法正确的是()(单选)a.c#允许许多接口实现,也允许多重继承b.c#允许多接口实现,但不允许多重继承c.c#不允许多接口实现,但允许多重继承d.c#不允许多重接口实现,也不允许多重继承23)在C#中,已知下列代码的运行结果是“老虎吃动物”,请问在空白处1和空白处2分别应该填写的代码是()PublicclassAnimal{Public空白处1voidEat(){Consone.WriteLine(“我要吃”);}}PublicclassTiger:Animal{Public空白处2voidEat(){Consone.WriteLine(“老虎吃动物”);}PubliccalssTest{StaticvoidMain(){Animalan=newTiger();an.Eat;}}}a)Virtual,newb)override,virtualc)virtual,overrided)new,virtual24)在C#中,下列关于抽象类和接口的说法,正确的是)()(选择一项)a)在抽象类中,所以的方法都是抽象方法b)继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法c)在接口中,可以有方法实现,在抽象类中不能有方法实现d)一个类可以从多个接口继承,也可以从多个抽象类继承25)关于以下C#代码的说法正确的是()PublicabstractclassAnimal{PublicabstractvoidEat();}PublicclassTiger:Animal{PublicoverridevoidEat(){Console.WriteLine(“老虎吃动物”);}}PublicclassTigress:Tiger{Staticvoidmain(){Tigresstiger=newTigress();Tiger.Eat();}}a)代码正确,但没有输出b)代码正确,并且输出为”老虎吃动物”;c)代码错误,因为Tigress类没有实现抽象基类Animal中的抽象方法d)代码错误,因为抽象基类Animal的Eat方法没有实现26)在c#中某程序员定义了一个IDataBase接口,以及实现该接口的类CDataBase,下列关于该段代码说法正确的是()(选择一项)publicinterfaceIDataBase{voidOpenTable(stringtableName);voidUpDataTable(stringtableName);}publicclassCDataBase:IDataBase{publicvoidOpenTable(stringtableName){Console.WriteLine(打开数据表);}publicvoidUpdataTable(stringtableName){Console.WriteLine(更新数据表);}staticvoidMain(){CDataBasedb=newCDataB