项目八 第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.抽象类和接口都不能被实例化,但都可以包含抽象方法。( )
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$