C#面向对象编程-多态习题

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

} a) b) c) d) 39) 项) a) b) 法 c) d) Virtual , new override , virtual virtual , override new , virtual
Biblioteka Baidu
在C#中,下列关于抽象类和接口的说法,正确的是)()(选择一 在抽象类中,所以的方法都是抽象方法 继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方 在接口中,可以有方法实现,在抽象类中不能有方法实现 一个类可以从多个接口继承,也可以从多个抽象类继承
a. b. c. d.
该段代码正确 代码错误,因为类中存在非抽象方法 代码错误,因为类中的方法没有实现 通过代码“Animal an = new Animal();”可以创建一个 Animal对象
45.在c#中,关于继承和接口,以下说法正确的是() (单选) a. c#允许许多接口实现,也允许多重继承 b.c#允许多接口实现,但不允许多重继承 c.c#不允许多接口实现,但允许多重继承 d.c#不允许多重接口实现,也不允许多重继承 38) 在C#中,已知下列代码的运行结果是“老虎吃动物”,请问在空白 处1和空白处2 分别应该填写的代码是() Public class Animal { Public 空白处1 void Eat() { Consone.WriteLine(“我要吃”); } } Public class Tiger:Animal { Public 空白处2 void Eat() { Consone.WriteLine(“老虎吃动物”); } Public calssTest { Static void Main() { Animal an = new Tiger(); an.Eat; } }
49) 关于以下C#代码的说法正确的是() Public abstract class Animal{ Public abstract void Eat(); } Public class Tiger:Animal{ Public override void Eat(){ Console.WriteLine(“老虎吃动物”); } } Public class Tigress:Tiger{ Static void main(){ Tigress tiger=new Tigress(); Tiger.Eat(); } } a) b) c) d) 代码正确,但没有输出 代码正确,并且输出为”老虎吃动物”; 代码错误,因为Tigress类没有实现抽象基类Animal中的抽象方法 代码错误,因为抽象基类Animal的Eat方法没有实现
public static void Main() { B b=new B(); A a=b; a.printStr("打印"); b.printStr("打印"); Console.ReadLine(); } } 运行程序后将在控制台窗口打印( )。(选择一项) a. 打印 重写的方法 b. 打印 打印 重写的方法 c. 打印 d. 程序有误,不能运行 14.在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进 行重载(选一项) a> override b> new c> static d> virtual 15.对下面的C # 程序: using System; public interface IAccount { void PosInterest(); void DeductFees(int feeSchedule); } class BusinessAccount : IAccount { int A; public static void Main() { BusinessAccount B = new BusinessAccount(); Console.WriteLine(B.A); Console.ReadLine();
} public void IAccount.PostInterest() { A = A+1; } public void IAccount.DeductFees(int feeSchedule) { A = A + feeSchedule; } } 以下的说法正确的是 ( ) (选择一项) a) 程序将出现编译错误,指示不能在实现接口BusinessAccount的类中定 义成员 A. b) 程序将出现编译错误,指示Public关键字对接口项无效 c) 程序编译正常,但是出现运行时错误,指示变量A没有初始化 d) 程序将正常运行,输出为0 16.可以使用()关键字重写方法。 A. Override B. new 17.()可以看作类的模具。 A. 抽象类 B. 接口 C. 虚方法 18.请问,此程序输出结果是() abstract class BaseClass{ public virtual void MethodA(){Console.WriteLine("BaseClass");} public virtual void MethodB(){} } class Class1: BaseClass{ public void MethodA(){Console.WriteLine("Class1");} public override void MethodB(){} } class Class2: Class1{ new public void MethodB(){}
11.在.NET中,关于组件多态性的陈述,下面除了( )都是正确的。(选 择一项) a可以通过接口实现多态性 b可以通过抽象类实现多态性 c多态性不只是重载或重写,而是智能重写 d在多态性中,需要调用哪个方法的决定是在设计时做出的 12.多态性允许对类的某个方法进行调用而无需考虑该方法所提供的特 定实现,例如,可能有名为了Road的类,它调用另一个类的Drive方 法,另一个类可能是SportsCar 或SmallCar, 但二者都提供Drive方法,虽然Drive 方法的实现因类的不同而异,但 Road 类仍可以调用它,并且它提供的结果可由Road 类使用和解释。在 .NET 中,可以由以下的方式来实现组件中多态性,除了()。(选择 一项) a) 通过接口实现多态性 b) 通过多个不同的子类从单个基类继承实现多态 c) 通过抽象类实现多态性 d) 通过受保护的成员函数来实现多态性 13.阅读以下的C#代码: class A { public abstract void printStr(string str) { Console.WriteLine(str); } } class B:A { public override void printStr(string str) { str=str+"(重写的方法)"; Console.WriteLine(str); } } class DefaultInitializerApp {
8.下列代码输出为( ): class Father{ public void F() { Console.WriteLine("A.F"); } public virtual void G() { Console.WriteLine("A.G"); } } class Son: Father{ new public void F() { Console.WriteLine("B.F"); } public override void G() { Console.WriteLine("B.G"); } } class override_new{ static void Main() { Son b = new Son(); Father a = b; a.F(); b.F(); a.G(); b.G(); } } A. A.F B.F A.G B.G B. A.F B.F B.G B.G
C#面向对象编程-多态
1.C#中的方法重写使用关键字()。 a) override b) overload c) static d) inherit 2.以下的C#代码,试图用来定义一个接口: public interface IFile{ int A; int delFile() { A = 3; } void disFile(); } 关于以上的代码,以下描述错误的是()。(选择一项) a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误 b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的, 所以不能编写具体的实现函数 c) 代码void disFile();定义无错误,接口可以没有返回值 d) 代码void disFile();应该编写为void disFile(){}; 3.在C#中,接口与抽象基类的区别在于()。 a) 抽象基类可以包含非抽象方法,而接口只能包含抽象方法 b) 抽象基类可以被实例化,而接口不能被实例化 c) 抽象基类不能被实例化,而接口可以被实例化 d) 抽象基类就是接口,它们之间无差别 4.在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书 建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计, 则下面最好的设计应该是()。 a) 建立一个新的杂志类Journal。 b) 建立一个新的杂志类Journal,并继承TextBoook类。 c) 建立一个基类Book和一个新的杂志类Journal,并让Journal类和 TextBoook类都继承于Book类。
o
=
new
19.请问,此程序输出结果是() public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B: A { public B() { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B();a.Fun(); } } A. A B A.Fun() B. A B B.Fun() C. B A A.Fun() D. B A B.Fun() 20.以下叙述正确的是(): A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 28.以下关于C#代码的说法正确的是()。(选择一项) Public abstract Animal { Public abstract void Eat(); Public void Sleep() { } }
d) 不建立任何类,把杂志图书的某些特殊属性加到TextBoook类 中。 5.可以使用()关键字重写方法。 a) Override b) New 6.()可以看作类的模具。 A. 抽象类 B. 接口 C. 虚方法 7.以下叙述正确的是:() A.接口中可以有虚方法。 C.接口不能被实例化。 B.一个类可以实现多个接口。 D.接口中可以包含已实现的方法。
C. D.
A.F B.F
A.F B.F
B.G B.G
B.G B.G
9.写出程序的输出结果: public class A { public virtual void Fun1(int i) { Console.WriteLine(i); } public void Fun2(A a) { a.Fun1(1); Fun1(5); } } public class B:A { public override void Fun1(int i) { base.Fun1(i+1); } public static void Main() { B b=new B(); A a=new A(); a.Fun2(b); b.Fun2(a); } } 答案:2,5,1,6 10.在C#中,允许多接口继承,从多个接口时,使用“:”后跟继承的 接口的名字,多个接口名称之间使用()符号进行分割。(选择一项) a)”.’ b)”->” c)”,” d)”::”
} class MainClass{ public static void Main(string[] Class2();o.MethodA(); } } A. BaseClass B. BassClass Class1 C. Class1 D. Class1 BassClass
args){Class2
相关文档
最新文档