内容正文:
编写说明:河北省对口招生《计算机类考纲百套卷》,依据《河北省2028年中等职业学校对口升学考试计算机类专业考试大纲》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编写专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第65卷,为考点训练卷,按《算法与程序设计-C#》范围和要求编写。具体内容为:1.封装的作用与实现;2.继承的概念、语法和实现。
2027版河北省《计算机类考纲百套卷》 第65卷
《算法与程序设计-C#》
知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共15小题,每题2分,共30分)
1.在C#中,关于封装的概念,下列说法错误的是( )
A. 封装是将数据和操作数据的方法绑定在一起,对外隐藏内部实现细节
B. 封装的主要目的是隐藏类的内部实现,保护数据不被随意修改
C. 只要将类的成员设置为private就能完全保证数据的安全
D. 封装通过访问修饰符控制成员的可访问性
【答案】C
【解析】封装确实通过private等访问修饰符来限制外部对类内部成员的直接访问,但这并不意味着只要设置为private就能"完全"保证数据安全。
2.关于C#中的继承,下列说法正确的是( )
A. 子类可以访问父类的private成员
B. 继承是一种"is-a"关系,如Dog is an Animal
C. C#支持多继承,所以一个类可以继承多个父类
D. 继承的主要目的是实现多态,而不是代码复用
【答案】B
【解析】子类不能直接访问父类的private成员,只能访问protected和public成员。
3.下列关于多态(Polymorphism)的描述,正确的是( )
A. 多态是指一个类只能有一种形态
B. 多态是指父类引用可以指向子类对象,并调用子类重写的方法
C. 多态只能通过接口实现
D. 多态会降低程序的扩展性
【答案】B
【解析】多态的核心是“一个接口,多种实现”。在C#中,通常表现为父类引用指向子类对象,运行时根据实际对象类型调用对应的方法。
4.若要使父类的方法在子类中能够被重写(Override),该方法必须使用( )关键字修饰。
A. Static B. abstract C. virtual D. new
【答案】C
【解析】父类中使用 virtual(虚方法)或 abstract(抽象方法)修饰的方法,才能在子类中使用 override 进行重写。
5.在C#中,base 关键字的作用是( )
A. 指向当前类的实例 B. 指向父类的实例,用于访问父类的成员
C. 定义一个基础类 D. 结束当前方法的执行
【答案】B
【解析】base 关键字用于在子类中访问父类的成员(如调用父类的构造函数、方法或属性)。this 关键字才是指向当前类的实例。
6.在C#中,以下关于类的定义,正确的是( )
A. 一个类可以同时继承两个父类
B. C#中所有类都直接或间接继承自Object类
C. sealed修饰符的类可以被继承
D. abstract修饰符的类必须包含至少一个抽象方法
【答案】B
【解析】一个类只能有一个父类。Object类是所有类的基类,是C#类型系统的根。sealed是密封类,不能被继承。
7.如果子类中定义了一个与父类同名但没有使用 virtual 修饰的方法,且没有使用 override 关键字,应该使用( )关键字来隐藏父类方法。
A. Override B. new C. static D. virtual
【答案】B
【解析】如果父类方法不是虚方法,子类想要定义同名方法,必须使用 new 关键字来显式隐藏父类成员,否则会报警告。
8.下列关于方法重写(Override)的描述,正确的是( )
A. 发生在同一个类中
B. 方法名相同,参数列表必须不同
C. 发生在父类和子类之间,方法签名必须相同
D. 父类方法可以是私有的
【答案】C
【解析】重写发生在继承关系的父子类之间,子类重写父类的虚方法或抽象方法,要求方法签名(名称、参数、返回值)完全一致。
9.关于new关键字在继承中的用法,下列说法错误的是( )
A. 子类可以使用new关键字隐藏父类的同名方法
B. 使用new隐藏方法后,通过父类引用调用该方法时会调用父类版本
C. new和override在隐藏方法时的效果完全相同
D. 隐藏字段也可以使用new关键字
【答案】C
【解析】override会替换父类方法,实现多态,通过父类引用调用时会执行子类版本,new只是隐藏父类方法,不实现多态,通过父类引用调用时会执行父类版本。
10.在C#中,以下情况中( )会发生运行时多态。
A. 方法重载(Overloading) B. 方法重写(Override)通过父类引用调用子类方法
C. 使用new关键字隐藏方法 D. 静态方法的调用
【答案】B
【解析】运行时多态:通过virtual+override实现,父类引用指向子类对象,方法的具体实现要在程序运行时才能确定。
11.C# 中实现封装最常用的方式是( )
A. 把字段设为 public,直接访问 B. 字段私有,通过属性公开访问
C. 全部成员都用 protected 修饰 D. 只用构造函数赋值
【答案】B
【解析】私有字段 + 公开属性,控制读写权限,保护内部数据。
12.下列访问修饰符中,只能本类内部访问的是( )
A. Public B. private C. protected D. internal
【答案】B
【解析】private:仅本类内部可用。
13.子类中用 new 修饰同名方法,作用是( )
A. 重写父类方法实现多态 B. 隐藏父类同名方法
C. 必须配合 virtual 使用 D. 可以用 override 替代
【答案】B
【解析】new 是方法隐藏,不是重写;看引用类型决定调用哪个方法,不实现多态。
14.下列关于 base 关键字用法错误的是( )
A. 调用父类构造函数 B. 访问父类公开 / 受保护成员
C. 调用本类其他构造函数 D. 在子类中指代父类
【答案】C
【解析】调用本类其他构造用 this,不是 base。
15.有如下代码结构,关于构造函数继承调用规则说法正确的是( )
class Father { public Father(string name){} }
class Son : Father { public Son() : base("张三") {} }
A. 子类构造默认一定会调用父类无参构造,无需手动写 base
B. 父类没有无参构造时,子类必须通过 base 手动调用父类有参构造
C. 子类只能用 this 调用父类构造函数
D. 子类构造可以随意省略 base,编译器自动补全有参构造
【答案】B
【解析】若父类没有无参构造,编译器无法自动调用,子类必须用 base(参数) 显式调用父类有参构造;A 仅父类有无参构造时才默认调用;调用父类构造用 base,this 是调用本类构造。
二、判断题(本大题共10小题,每题2分,共20分)
16.在C#中,封装就是将所有类的成员都设置为private,不让外部访问。( )
【答案】错
【解析】封装并不是简单地将所有成员设置为private。
17.public访问修饰符表示成员可以被任何代码访问,而private表示只有类本身可以访问。( )
【答案】对
【解析】public(公共成员)具有最高访问级别,任何代码都可以访问它,包括类外部的代码、不同命名空间、不同程序集等。private(私有成员)具有最低访问级别,只有声明它的那个类内部可以访问,子类也无法访问。
18. C#支持类的多继承,即一个类可以同时继承多个父类。( )
【答案】错
【解析】C#只支持单继承,一个类只能有一个直接父类(基类)。
19.在C#继承中,子类可以继承父类的所有成员,包括private成员。( )
【答案】错
【解析】子类在语法上"继承"了父类的所有成员(编译器会在子类对象中包含父类成员的副本),但private成员在子类中是不可见的、无法直接访问的。
20.在C#中,Object类是所有类的基类,任何类都直接或间接继承自Object。( )
【答案】对
【解析】在C#中,System.Object(可简写为object)是所有类型的最终基类。所有类都直接或间接地继承自Object。
21.父类构造函数总是先于子类构造函数执行,即使子类没有显式调用base()。( )
【答案】对
【解析】在创建子类对象时,系统必须先初始化从父类继承来的成员,而这些成员需要通过父类构造函数来初始化。
22.使用override重写父类方法后,通过父类引用调用该方法时,会执行子类的版本;而使用new隐藏父类方法后,通过父类引用调用该方法时,会执行父类的版本。( )
【答案】对
【解析】override:替换父类方法,实现多态。父类引用指向子类对象时,调用的是子类版本,new:隐藏父类方法,不实现多态。父类引用指向子类对象时,仍然调用父类版本。
23.构造函数可以被继承,子类构造函数实际上调用的是父类已定义的构造函数。( )
【答案】错
【解析】构造函数不能被继承!子类不会继承父类的构造函数。
24.在C#继承体系中,如果子类构造函数没有显式调用base()或this(),编译器会自动生成对父类无参构造函数的调用。( )
【答案】对
【解析】如果子类构造函数没有显式指定: base(...)或: this(...),编译器会自动添加: base(),即调用父类的无参构造函数。
25.子类可以继承父类的所有成员,包括私有成员和构造函数。( )
【答案】错
【解析】子类不能继承父类的私有成员。
3、 填空题(本大题共10个题,每题2分,共20分)
26.C# 中实现继承使用的符号是 ________。
【答案】冒号(:)
【解析】C# 中类实现继承的语法:子类名 : 父类名
27.在子类构造函数中,用于调用父类构造函数的关键字是 ________。
【答案】base
【解析】子类构造函数后用 : base(参数) 调用父类构造函数,base 专门指代父类。
28.父类中使用 ________ 关键字修饰的方法,可以在子类中被重写。
【答案】virtual
【解析】父类用 virtual 标记虚方法,子类才能用 override 进行重写,实现多态。
29.若要在子类中访问父类的受保护成员,父类成员应使用 ________ 访问修饰符。
【答案】protected
【解析】protected 修饰的成员:本类内部、子类、同命名空间都可以访问,正好满足子类访问父类受保护成员的需求。
30.在C#中,如果子类定义了一个与父类同名但不是重写的方法,应该使用____关键字来显式声明这是隐藏关系,否则编译器会给出警告。
【答案】new
【解析】new关键字用于隐藏(hide)父类的同名成员。
31.C#中的多态有两种形式:编译时多态通过____实现,运行时多态通过virtual和____实现。
【答案】 方法重载(overloading);override
【解析】编译时多态(静态多态)在编译时根据参数列表确定调用哪个方法的重载版本;运行时多态(动态多态)在程序运行时根据实际对象类型确定调用哪个方法,需要virtual+override配合实现。
32.抽象类使用____关键字修饰,抽象方法使用____关键字修饰,且抽象方法不能有方法体。
【答案】 abstract;abstract
【解析】抽象类是一种不能被实例化的类,用abstract修饰;抽象方法是抽象类中的纯虚方法,用abstract修饰且没有方法体(分号结尾)。抽象类可以包含抽象方法和非抽象方法(具体实现的方法)。继承抽象类的非抽象子类必须实现所有抽象方法。
33.父类引用指向子类对象时,如果调用的是被new隐藏的方法,实际执行的是____类的方法;如果调用的是被override重写的方法,实际执行的是____类的方法。
【答案】父;子
【解析】new隐藏:编译时根据引用类型决定,父类引用调用父类版本,override重写:运行时根据对象类型决定,父类引用调用子类版本.
34.在继承中,如果父类方法使用virtual标记,子类使用override重写,那么通过父类引用调用该方法时,实际执行的是____类的方法,这称为____。
【答案】子;多态
【解析】这是运行时多态的典型特征。父类引用指向子类对象时,override方法会表现出"欺骗性"——看起来是父类引用在调用方法,但实际执行的是子类实现。这就是多态的核心:同一操作作用于不同对象,产生不同行为。
35. 如果一个类中包含抽象方法,那么这个类必须声明为____类;一个类如果声明为sealed,则____(能/不能)同时声明为abstract。
【答案】abstract;不能
【解析】 包含抽象成员的类必须是抽象类。sealed和abstract是互斥的:sealed表示"不能被继承",abstract表示"可能被继承"(因为抽象类设计出来就是要被继承的)。一个类不能同时标记为sealed和abstract,编译器会报错。
四、读程题(本大题共3个题,每题10分,共30分)
36.下列C#代码执行后,程序的运行结果为______
class Parent
{
public void Show()
{
Console.WriteLine("Parent.Show");
}
}
class Child : Parent
{
public new void Show()
{
Console.WriteLine("Child.Show");
}
}
class Program
{
static void Main()
{
Parent p = new Child();
p.Show();
}
}
【答案】Parent.Show
【解析】子类使用new关键字隐藏父类方法,这不是多态。变量p的类型是Parent,即使指向Child对象,调用的也是Parent的Show()方法。输出"Parent.Show"。
37.下列C#代码执行后,程序的运行结果为______
public class BaseClass
{
public BaseClass()
{
Console.Write("Base ");
}
public virtual void Show()
{
Console.Write("Base.Show ");
}
}
public class DerivedClass : BaseClass
{
public DerivedClass()
{
Console.Write("Derived ");
}
public override void Show()
{
Console.Write("Derived.Show ");
}
}
class Program
{
static void Main()
{
BaseClass obj = new DerivedClass();
obj.Show();
}
}
【答案】Base Derived Derived.Show
【解析】new DerivedClass()会首先调用父类BaseClass的构造函数。构造函数执行完毕后,obj.Show()被调用。
38. 下列C#代码执行后,程序的运行结果为______
public class Animal
{
public virtual string Speak()
{
return "...";
}
}
public class Dog : Animal
{
public override string Speak()
{
return "汪汪";
}
}
public class Cat : Animal
{
public override string Speak()
{
return "喵喵";
}
}
public class Program
{
public static void Main()
{
Animal[] animals = { new Dog(), new Cat(), new Dog() };
foreach(Animal a in animals)
{
Console.Write(a.Speak() + " ");
}
}
}
【答案】汪汪 喵喵 汪汪
【解析】foreach遍历数组,对每个Animal类型的元素a调用Speak()方法。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:河北省对口招生《计算机类考纲百套卷》,依据《河北省2028年中等职业学校对口升学考试计算机类专业考试大纲》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编写专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第65卷,为考点训练卷,按《算法与程序设计-C#》范围和要求编写。具体内容为:1.封装的作用与实现;2.继承的概念、语法和实现。
2027版河北省《计算机类考纲百套卷》 第65卷
《算法与程序设计-C#》
知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共15小题,每题2分,共30分)
1.在C#中,关于封装的概念,下列说法错误的是( )
A. 封装是将数据和操作数据的方法绑定在一起,对外隐藏内部实现细节
B. 封装的主要目的是隐藏类的内部实现,保护数据不被随意修改
C. 只要将类的成员设置为private就能完全保证数据的安全
D. 封装通过访问修饰符控制成员的可访问性
2.关于C#中的继承,下列说法正确的是( )
A. 子类可以访问父类的private成员
B. 继承是一种"is-a"关系,如Dog is an Animal
C. C#支持多继承,所以一个类可以继承多个父类
D. 继承的主要目的是实现多态,而不是代码复用
3.下列关于多态(Polymorphism)的描述,正确的是( )
A. 多态是指一个类只能有一种形态
B. 多态是指父类引用可以指向子类对象,并调用子类重写的方法
C. 多态只能通过接口实现
D. 多态会降低程序的扩展性
4.若要使父类的方法在子类中能够被重写(Override),该方法必须使用( )关键字修饰。
A. Static B. abstract C. virtual D. new
5.在C#中,base 关键字的作用是( )
A. 指向当前类的实例 B. 指向父类的实例,用于访问父类的成员
C. 定义一个基础类 D. 结束当前方法的执行
6.在C#中,以下关于类的定义,正确的是( )
A. 一个类可以同时继承两个父类
B. C#中所有类都直接或间接继承自Object类
C. sealed修饰符的类可以被继承
D. abstract修饰符的类必须包含至少一个抽象方法
7.如果子类中定义了一个与父类同名但没有使用 virtual 修饰的方法,且没有使用 override 关键字,应该使用( )关键字来隐藏父类方法。
A. Override B. new C. static D. virtual
8.下列关于方法重写(Override)的描述,正确的是( )
A. 发生在同一个类中
B. 方法名相同,参数列表必须不同
C. 发生在父类和子类之间,方法签名必须相同
D. 父类方法可以是私有的
9.关于new关键字在继承中的用法,下列说法错误的是( )
A. 子类可以使用new关键字隐藏父类的同名方法
B. 使用new隐藏方法后,通过父类引用调用该方法时会调用父类版本
C. new和override在隐藏方法时的效果完全相同
D. 隐藏字段也可以使用new关键字
10.在C#中,以下情况中( )会发生运行时多态。
A. 方法重载(Overloading) B. 方法重写(Override)通过父类引用调用子类方法
C. 使用new关键字隐藏方法 D. 静态方法的调用
11.C# 中实现封装最常用的方式是( )
A. 把字段设为 public,直接访问 B. 字段私有,通过属性公开访问
C. 全部成员都用 protected 修饰 D. 只用构造函数赋值
12.下列访问修饰符中,只能本类内部访问的是( )
A. Public B. private C. protected D. internal
13.子类中用 new 修饰同名方法,作用是( )
A. 重写父类方法实现多态 B. 隐藏父类同名方法
C. 必须配合 virtual 使用 D. 可以用 override 替代
14.下列关于 base 关键字用法错误的是( )
A. 调用父类构造函数 B. 访问父类公开 / 受保护成员
C. 调用本类其他构造函数 D. 在子类中指代父类
15.有如下代码结构,关于构造函数继承调用规则说法正确的是( )
class Father { public Father(string name){} }
class Son : Father { public Son() : base("张三") {} }
A. 子类构造默认一定会调用父类无参构造,无需手动写 base
B. 父类没有无参构造时,子类必须通过 base 手动调用父类有参构造
C. 子类只能用 this 调用父类构造函数
D. 子类构造可以随意省略 base,编译器自动补全有参构造
二、判断题(本大题共10个题,每题2分,共20分)
16.在C#中,封装就是将所有类的成员都设置为private,不让外部访问。( )
17.public访问修饰符表示成员可以被任何代码访问,而private表示只有类本身可以访问。( )
18. C#支持类的多继承,即一个类可以同时继承多个父类。( )
19.在C#继承中,子类可以继承父类的所有成员,包括private成员。( )
20.在C#中,Object类是所有类的基类,任何类都直接或间接继承自Object。( )
21.父类构造函数总是先于子类构造函数执行,即使子类没有显式调用base()。( )
22.使用override重写父类方法后,通过父类引用调用该方法时,会执行子类的版本;而使用new隐藏父类方法后,通过父类引用调用该方法时,会执行父类的版本。( )
23.构造函数可以被继承,子类构造函数实际上调用的是父类已定义的构造函数。( )
24.在C#继承体系中,如果子类构造函数没有显式调用base()或this(),编译器会自动生成对父类无参构造函数的调用。( )
25.子类可以继承父类的所有成员,包括私有成员和构造函数。( )
3、 填空题(本大题共10个题,每题2分,共20分)
26.C# 中实现继承使用的符号是 ________。
27.在子类构造函数中,用于调用父类构造函数的关键字是 ________。
28.父类中使用 ________ 关键字修饰的方法,可以在子类中被重写。
29.若要在子类中访问父类的受保护成员,父类成员应使用 ________ 访问修饰符。
30.在C#中,如果子类定义了一个与父类同名但不是重写的方法,应该使用____关键字来显式声明这是隐藏关系,否则编译器会给出警告。
31.C#中的多态有两种形式:编译时多态通过____实现,运行时多态通过virtual和____实现。
32.抽象类使用____关键字修饰,抽象方法使用____关键字修饰,且抽象方法不能有方法体。
33.父类引用指向子类对象时,如果调用的是被new隐藏的方法,实际执行的是____类的方法;如果调用的是被override重写的方法,实际执行的是____类的方法。
34.在继承中,如果父类方法使用virtual标记,子类使用override重写,那么通过父类引用调用该方法时,实际执行的是____类的方法,这称为____。
35. 如果一个类中包含抽象方法,那么这个类必须声明为____类;一个类如果声明为sealed,则____(能/不能)同时声明为abstract。
四、读程题(本大题共3个题,每题10分,共30分)
36.下列C#代码执行后,程序的运行结果为______
class Parent
{
public void Show()
{
Console.WriteLine("Parent.Show");
}
}
class Child : Parent
{
public new void Show()
{
Console.WriteLine("Child.Show");
}
}
class Program
{
static void Main()
{
Parent p = new Child();
p.Show();
}
}
37.下列C#代码执行后,程序的运行结果为______
public class BaseClass
{
public BaseClass()
{
Console.Write("Base ");
}
public virtual void Show()
{
Console.Write("Base.Show ");
}
}
public class DerivedClass : BaseClass
{
public DerivedClass()
{
Console.Write("Derived ");
}
public override void Show()
{
Console.Write("Derived.Show ");
}
}
class Program
{
static void Main()
{
BaseClass obj = new DerivedClass();
obj.Show();
}
}
38. 下列C#代码执行后,程序的运行结果为______
public class Animal
{
public virtual string Speak()
{
return "...";
}
}
public class Dog : Animal
{
public override string Speak()
{
return "汪汪";
}
}
public class Cat : Animal
{
public override string Speak()
{
return "喵喵";
}
}
public class Program
{
public static void Main()
{
Animal[] animals = { new Dog(), new Cat(), new Dog() };
foreach(Animal a in animals)
{
Console.Write(a.Speak() + " ");
}
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$