项目八 第45练 多态《算法与程序设计--c#》(河北科学技术出版社)一课一练

| 2份
| 6页
| 55人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《算法与程序设计—C#》(河北科学技术出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《算法与程序设计--c#》(河北科学技术出版社)一课一练的项目八的第3练,内容涵盖项目八任务三 多态。 《算法与程序设计C#》(河北科学技术出版社)第45练 项目八 C#面向对象编程 任务三 多态 1、 单项选择题(本题共5小题) 1.以下关于 C# 多态的说法,正确的是( )。 A. 多态只能通过继承实现 B. 方法重载是运行时多态的一种形式 C. 重写父类方法需要使用override关键字 D. 接口不能用于实现多态 【答案】C 【解析】A 错误:多态可通过继承(方法重写)和接口实现。 B 错误:方法重载是编译时多态,运行时多态通过virtual/override实现。 C 正确:子类重写父类的virtual方法必须使用override。 D 错误:实现接口是多态的重要方式(如IEnumerable可遍历不同集合) 2.以下代码的输出结果是( )。 class Animal { public virtual void Speak() { Console.WriteLine("Animal speaks"); } } class Dog : Animal { public override void Speak() { Console.WriteLine("Dog barks"); } } class Program { static void Main() { Animal animal = new Dog(); animal.Speak(); } } Animal speaks B. Dog barks C. 编译错误 D. 运行时异常 【答案】B 【解析】virtual/override实现运行时多态,animal实际指向Dog对象,调用Dog.Speak()。 3.若要让子类强制重写父类方法,应将父类方法声明为( )。 A. virtual B. abstract C. override D. sealed 【答案】B 【解析】A:virtual允许子类重写,但不强制。 B:abstract(抽象方法)必须在非抽象子类中重写。 C:override是子类重写方法的关键字。 D:sealed禁止子类进一步重写 4.以下哪种情况不属于多态的应用?( ) A. 不同类型的图形计算面积 B. 同一个方法处理不同类型的集合 C. 类中定义多个同名但参数不同的方法 D. 子类对象赋值给父类引用 【答案】C 【解析】C:方法重载(Overload)属于编译时多态,题目问的是运行时多态的应用。 A、B、D:均通过继承或接口实现运行时多态 5.接口与抽象类实现多态的主要区别是( )。 A. 接口支持多重继承,抽象类不支持 B. 抽象类中的方法必须全部是抽象方法 C. 接口中的方法可以有实现体 D. 抽象类不能被实例化,接口可以 【答案】A 【解析】A:C# 类只能单继承,但可实现多个接口。 B:抽象类可包含非抽象方法。 C:接口方法默认是抽象的,不能有实现(C#8.0 + 允许默认实现,但非主流)。 D:接口和抽象类均不可实例化。 2、 判断题(本题共5小题) 1. 在 C# 中,子类重写父类的方法时,必须保证方法名、参数列表和返回类型完全相同。( ) 【答案】√ 【解析】重写(override)要求方法签名(名称、参数、返回类型)与父类的virtual/abstract方法一致。 2.sealed关键字可用于修饰类或方法,防止被继承或重写。( ) 【答案】√ 【解析】sealed class禁止被继承(如string类)。 sealed override禁止子类进一步重写该方法 3.接口中的方法默认是public abstract,不能有方法体。( ) 【答案】√ 【解析】接口定义契约,方法必须由实现类提供具体实现 4.以下代码会导致编译错误class Animal { public virtual void Eat() { } } class Dog : Animal { public new void Eat() { } } Animal a = new Dog(); a.Eat(); // 调用的是Dog.Eat( ) 【答案】× 【解析】new关键字隐藏父类方法,形成静态绑定。 a.Eat()调用的是Animal.Eat(),若需动态绑定(调用Dog.Eat()),应使用override。 5.抽象类和接口都不能被实例化,但都可以包含抽象方法。( ) 【答案】对 【解析】抽象类和接口均为抽象类型,无法创建实例。 抽象类可包含抽象方法(需标记abstract)和非抽象方法,接口中的方法默认抽象。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《算法与程序设计—C#》(河北科学技术出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《算法与程序设计--c#》(河北科学技术出版社)一课一练的项目八的第3练,内容涵盖项目八任务三 多态。 《算法与程序设计C#》(河北科学技术出版社)第45练 项目八 C#面向对象编程 任务三 多态 1、 单项选择题(本题共5小题) 1.以下关于 C# 多态的说法,正确的是( )。 A. 多态只能通过继承实现 B. 方法重载是运行时多态的一种形式 C. 重写父类方法需要使用override关键字 D. 接口不能用于实现多态 2.以下代码的输出结果是( )。 class Animal { public virtual void Speak() { Console.WriteLine("Animal speaks"); } } class Dog : Animal { public override void Speak() { Console.WriteLine("Dog barks"); } } class Program { static void Main() { Animal animal = new Dog(); animal.Speak(); } } Animal speaks B. Dog barks C. 编译错误 D. 运行时异常 3.若要让子类强制重写父类方法,应将父类方法声明为( )。 A. virtual B. abstract C. override D. sealed 4.以下哪种情况不属于多态的应用?( ) A. 不同类型的图形计算面积 B. 同一个方法处理不同类型的集合 C. 类中定义多个同名但参数不同的方法 D. 子类对象赋值给父类引用 5.接口与抽象类实现多态的主要区别是( )。 A. 接口支持多重继承,抽象类不支持 B. 抽象类中的方法必须全部是抽象方法 C. 接口中的方法可以有实现体 D. 抽象类不能被实例化,接口可以 2、 判断题(本题共5小题) 1. 在 C# 中,子类重写父类的方法时,必须保证方法名、参数列表和返回类型完全相同。( ) 2.sealed关键字可用于修饰类或方法,防止被继承或重写。( ) 3.接口中的方法默认是public abstract,不能有方法体。( ) 4.以下代码会导致编译错误class Animal { public virtual void Eat() { } } class Dog : Animal { public new void Eat() { } } Animal a = new Dog(); a.Eat(); // 调用的是Dog.Eat( ) 5.抽象类和接口都不能被实例化,但都可以包含抽象方法。( ) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

项目八  第45练  多态《算法与程序设计--c#》(河北科学技术出版社)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。