内容正文:
编写说明:河北省普通高等学校对口招生考试计算机类《算法与程序设计考点双析卷》,依据《河北省普通高等学校对口招生计算机类专业考试考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷。助力师生构建 “讲练结合” 的学习闭环,适用于高考复习教学。
本专辑第31、第32卷精准对标河北省考纲,知识模块(四)C#面向对象设计:
1. 掌握面向对象的三大特征:封装、继承、多态;
2. 掌握类和对象的概念、类的定义、对象的创建与使用、属性和方法;
3. 掌握关键字this、this访问属性、this调用成员方法、this调用构造方法;
4. 掌握关键字static、静态字段、静态属性、静态方法;
5. 掌握构造函数的语法格式和用法;
6. 了解封装的作用与实现;
7. 了解继承的概念、语法和实现。
河北省对口招生考试 计算机类
《算法与程序设计》考点双析卷 第32卷
C#面向对象设计(4) 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下方式中可以实现多态的是( )
A.使用new关键字 B.使用virtual和override关键字
C.使用方法重载 D.以上都可以
【答案】D
【详解】new关键字可以隐藏基类方法,virtual和override可以实现虚方法的多态,方法重载也是一种多态形式。
2.在C#中,以下关于接口和抽象类的说法正确的是( )
A.接口可以被继承,抽象类不能被继承
B.接口可以包含方法的实现,抽象类不能包含方法的实现
C.一个类可以实现多个接口,但只能继承一个抽象类
D.接口和抽象类都可以被实例化
【答案】C
【详解】一个类可以实现多个接口,但只能继承一个抽象类(或基类)。接口不能包含方法的实现(C# 8.0之前),抽象类可以包含非抽象方法的实现。接口不能被实例化,抽象类也不能被实例化。
3.关于C#中的抽象类,以下说法错误的是( )
A.抽象类不能被实例化
B.抽象类可以包含抽象方法和非抽象方法
C.抽象类可以包含字段和构造函数
D.抽象类必须包含抽象方法
【答案】D
【详解】抽象类可以不包含抽象方法,但不能被实例化。抽象类可以包含字段、构造函数、非抽象方法和抽象方法。
4.在C#中,以下关于接口的声明,正确的是( )
A.public interface IMyInterface { void Method(); }
B.public interface IMyInterface { void Method() { Console.WriteLine("Hello"); } }
C.public interface IMyInterface { int Field; }
D.public interface IMyInterface { static void StaticMethod(); }
【答案】A
【详解】接口中只能包含方法、属性、事件和索引器的声明,不能包含实现(选项B错误)、字段(选项C错误)或静态方法(选项D错误)。
5.类的以下特性中,可以用于方便地重用已有的代码和数据的是( )
A.多态 B.封装 C.继承 D.抽象
【答案】C
6.以下关于继承的说法错误的是( )
A..NET 框架类库中,object 类是所有类的基类
B.派生类不能直接访问基类的私有成员
C.protected 修饰符既有公有成员的特点,又有私有成员的特点
D.基类对象不能引用派生类对象
【答案】D
【详解】在 C# 中,基类对象可以引用派生类对象,这是多态性的基础。
7.以下关于虚拟方法和抽象方法的说明,错误的是( )
A.虚拟方法用 virtual 前缀修饰 B.抽象方法用 abstract 前缀修饰
C.抽象方法不具有方法体实现部分 D.虚拟方法不具有方法体实现部分
【答案】D
【详解】虚拟方法具有方法体实现部分,它提供了默认的实现,子类可以根据需要选择是否重写该实现;而抽象方法才没有方法体。
8.以下代码定义了一个类的属性,该属性的作用是( )
private int _age;
public int Age
{ get { return _age; }
Set { if (value >= 0)
{ _age = value;}}
}
A.只能读取_age的值,不能修改
B.可以读取和修改_age的值,但修改时会检查输入是否为非负数
C.只能修改_age的值,不能读取
D.可以随意读取和修改_age的值,没有任何限制
【答案】B
【详解】该属性有get访问器,所以可以读取_age的值;有set访问器,并且在set访问器中添加了输入验证,当输入值大于等于 0 时才会更新_age的值,所以修改时会检查输入是否为非负数。
9.在C#中,派生类的对象对它的基类成员中的 是不可访问的。( )
A.私有成员 B.公有成员 C.保护成员 D.内部成员
【答案】A
【详解】在C#的继承中,派生类无法对基类中的私有成员进行直接访问。
10.在C#中,下列代码体现了( )
class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
A.这不是方法重载,因为方法名相同
B.这是方法重载,因为方法名相同但参数类型不同
C.这是方法重写,不是方法重载
D.以上说法都不对
【答案】B
【详解】方法重载的定义是在同一个类中,方法名相同但参数列表不同(参数个数、类型或顺序不同)。
11.C#中声明一个无返回值方法,返回值类型应写( )
A.int B.string C.void D.bool
【答案】C
【详解】void表示方法无返回值,A、B、D是有返回值的类型,用于声明有对应返回值的方法 。
12.在C#中,如何声明一个静态成员( )
A.使用static关键字 B.使用final关键字
C.使用const关键字 D.使用abstract关键字
【答案】A
13.关于静态成员,以下说法正确的是( )
A.静态成员属于类,不属于任何实例
B.静态成员只能通过对象访问
C.静态成员在每次创建对象时都会被初始化
D.静态成员不能在类的方法中被修改
【答案】A
【详解】静态成员属于类,不属于任何特定实例。它们可以通过类名直接访问,无需创建对象。静态成员只在第一次引用它们时初始化一次。因此,选项A是正确的,而B、C和D都是错误的。
14.静态方法中可以直接使用的是( )
A.实例字段 B.实例属性 C.其他静态方法 D.this 关键字
【答案】C
【详解】静态方法内部只能直接访问静态成员(静态字段、静态属性、静态方法 );A、B 是实例成员,无法直接访问;D 错误,this 关联实例,静态方法无实例,不能用 this,所以选 C。
15.类的静态成员与实例成员的主要区别是( )
A.静态成员是 public 的,实例成员是 private 的
B.静态成员属于类,实例成员属于类的实例
C.静态成员只能读,实例成员可读写
D.静态成员在编译期确定,实例成员在运行期确定
【答案】B
【详解】静态成员关联“类”,不依赖具体对象;实例成员关联“对象实例”,每个实例有独立副本;A 错误,成员的访问修饰符(public/private )与静态/实例无关;C 错误,静态成员和实例成员都可定义为读写;D 错误,静态成员和实例成员的存在时机与编译/运行期无关,所以选 B。
16.以下关于静态方法的描述,错误的是( )
A.静态方法属于类,无需创建实例即可调用
B.静态方法中可以直接访问实例字段或实例属性
C.静态方法声明时需用 static 关键字
D.静态方法常用于实现工具类的通用逻辑
【答案】B
【详解】静态方法属于类,内部只能直接访问 静态成员(静态字段、静态属性、其他静态方法 ),无法直接访问实例成员(实例字段、实例属性 ),因为实例成员依赖具体对象;A、C、D 均符合静态方法特性,所以选 B。
17.静态属性的特点是( )
A.只能用于获取实例级别的数据
B.声明时需用 static 关键字,且可包含 get/set 访问器
C.必须通过类的实例访问
D.静态属性不能封装静态字段
【答案】B
【详解】静态属性用于操作类级别的数据,声明时需加 static 关键字,可像普通属性一样写 get/set 逻辑;A 错误,静态属性操作“类级别”数据;C 错误,静态属性通过 类名 访问(如 MyClass.MyStaticProperty );D 错误,静态属性常用来封装静态字段,所以选 B。
18.关于 C# 静态字段,说法正确的是( )
A.静态字段属于类的实例,每个实例有独立副本
B.静态字段属于类,所有实例共享同一值
C.静态字段必须通过类的实例访问
D.静态字段不能和实例字段同名
【答案】B
【详解】静态字段是“类级别”的,属于类本身,所有类的实例共享同一个静态字段的值;A 错误,静态字段不属于实例;C 错误,静态字段通过 类名 访问(如 MyClass.MyStaticField ),无需实例;D 错误,静态字段和实例字段可同名(通过类名/实例名区分 ),所以选 B。
19.在C#语言中,关于方法重载的判定条件,下列选项中不正确的是( )
A.参数类型不同 B.返回类型不同
C.方法名相同 D.参数个数不同
【答案】B
20.下面有关C#中方法的参数描述正确的是( )
A.利用值类型参数调用方法时,对形参的修改会反映到实参上去
B.输出型参数(out)的实参在传递给形参前,不需要明确赋值
C.引用型参数(ref)不另外开辟新的内存区域,这一点是它与输出型参数(out)的不同之处
D.使用params做数组参数的关键字时,params 数组可以不是最后一个参数
【答案】B
二、填空题(本大题共8小题,每题5分,共40分)
21.在C#中,使用______关键字可以定义一个虚方法,该方法可以在派生类中被重写。
【答案】virtual
22._________是用一个框架把数据和代码组合在一起,形成一个对象。
【答案】封装
【详解】C#的封装是将数据和代码组合在一起形成一个对象。
23.在C#中定义接口时,使用的关键字是______。
【答案】interface
【详解】interface关键字用来声明接口。
24.如果一个属性里只有get访问器,那么该属性为__________属性。
【答案】只读
【详解】只有get访问器为只读属性,set为可写属性。
25.若要让多个对象共享同一份数据,可将该数据声明为__________字段。
【答案】静态
【详解】静态字段在类的所有实例间共享值,适合存储全局/共享数据,所以填“静态” 。
26.在C#中,传入某个属性的 SET 方法的隐含参数的名称是________。
【答案】value
【详解】在 C# 中,属性的set访问器中存在一个隐含的参数,用于接收要赋给属性的值,这个参数的固定名称是value。
27.在C#中,若方法不返回值,返回类型为 _________。
【答案】void
28._________是类的行为。
【答案】方法
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:河北省普通高等学校对口招生考试计算机类《算法与程序设计考点双析卷》,依据《河北省普通高等学校对口招生计算机类专业考试考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷。助力师生构建 “讲练结合” 的学习闭环,适用于高考复习教学。
本专辑第31、第32卷精准对标河北省考纲,知识模块(四)C#面向对象设计:
1. 掌握面向对象的三大特征:封装、继承、多态;
2. 掌握类和对象的概念、类的定义、对象的创建与使用、属性和方法;
3. 掌握关键字this、this访问属性、this调用成员方法、this调用构造方法;
4. 掌握关键字static、静态字段、静态属性、静态方法;
5. 掌握构造函数的语法格式和用法;
6. 了解封装的作用与实现;
7. 了解继承的概念、语法和实现。
河北省对口招生考试 计算机类
《算法与程序设计》考点双析卷 第32卷
C#面向对象设计(4) 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下方式中可以实现多态的是( )
A.使用new关键字 B.使用virtual和override关键字
C.使用方法重载 D.以上都可以
2.在C#中,以下关于接口和抽象类的说法正确的是( )
A.接口可以被继承,抽象类不能被继承
B.接口可以包含方法的实现,抽象类不能包含方法的实现
C.一个类可以实现多个接口,但只能继承一个抽象类
D.接口和抽象类都可以被实例化
3.关于C#中的抽象类,以下说法错误的是( )
A.抽象类不能被实例化
B.抽象类可以包含抽象方法和非抽象方法
C.抽象类可以包含字段和构造函数
D.抽象类必须包含抽象方法
4.在C#中,以下关于接口的声明,正确的是( )
A.public interface IMyInterface { void Method(); }
B.public interface IMyInterface { void Method() { Console.WriteLine("Hello"); } }
C.public interface IMyInterface { int Field; }
D.public interface IMyInterface { static void StaticMethod(); }
5.类的以下特性中,可以用于方便地重用已有的代码和数据的是( )
A.多态 B.封装 C.继承 D.抽象
6.以下关于继承的说法错误的是( )
A..NET 框架类库中,object 类是所有类的基类
B.派生类不能直接访问基类的私有成员
C.protected 修饰符既有公有成员的特点,又有私有成员的特点
D.基类对象不能引用派生类对象
7.以下关于虚拟方法和抽象方法的说明,错误的是( )
A.虚拟方法用 virtual 前缀修饰 B.抽象方法用 abstract 前缀修饰
C.抽象方法不具有方法体实现部分 D.虚拟方法不具有方法体实现部分
8.以下代码定义了一个类的属性,该属性的作用是( )
private int _age;
public int Age
{ get { return _age; }
Set { if (value >= 0)
{ _age = value;}}
}
A.只能读取_age的值,不能修改
B.可以读取和修改_age的值,但修改时会检查输入是否为非负数
C.只能修改_age的值,不能读取
D.可以随意读取和修改_age的值,没有任何限制
9.在C#中,派生类的对象对它的基类成员中的 是不可访问的。( )
A.私有成员 B.公有成员 C.保护成员 D.内部成员
10.在C#中,下列代码体现了( )
class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
A.这不是方法重载,因为方法名相同
B.这是方法重载,因为方法名相同但参数类型不同
C.这是方法重写,不是方法重载
D.以上说法都不对
11.C#中声明一个无返回值方法,返回值类型应写( )
A.int B.string C.void D.bool
12.在C#中,如何声明一个静态成员( )
A.使用static关键字 B.使用final关键字
C.使用const关键字 D.使用abstract关键字
13.关于静态成员,以下说法正确的是( )
A.静态成员属于类,不属于任何实例
B.静态成员只能通过对象访问
C.静态成员在每次创建对象时都会被初始化
D.静态成员不能在类的方法中被修改
14.静态方法中可以直接使用的是( )
A.实例字段 B.实例属性 C.其他静态方法 D.this 关键字
15.类的静态成员与实例成员的主要区别是( )
A.静态成员是 public 的,实例成员是 private 的
B.静态成员属于类,实例成员属于类的实例
C.静态成员只能读,实例成员可读写
D.静态成员在编译期确定,实例成员在运行期确定
16.以下关于静态方法的描述,错误的是( )
A.静态方法属于类,无需创建实例即可调用
B.静态方法中可以直接访问实例字段或实例属性
C.静态方法声明时需用 static 关键字
D.静态方法常用于实现工具类的通用逻辑
17.静态属性的特点是( )
A.只能用于获取实例级别的数据
B.声明时需用 static 关键字,且可包含 get/set 访问器
C.必须通过类的实例访问
D.静态属性不能封装静态字段
18.关于 C# 静态字段,说法正确的是( )
A.静态字段属于类的实例,每个实例有独立副本
B.静态字段属于类,所有实例共享同一值
C.静态字段必须通过类的实例访问
D.静态字段不能和实例字段同名
19.在C#语言中,关于方法重载的判定条件,下列选项中不正确的是( )
A.参数类型不同 B.返回类型不同
C.方法名相同 D.参数个数不同
20.下面有关C#中方法的参数描述正确的是( )
A.利用值类型参数调用方法时,对形参的修改会反映到实参上去
B.输出型参数(out)的实参在传递给形参前,不需要明确赋值
C.引用型参数(ref)不另外开辟新的内存区域,这一点是它与输出型参数(out)的不同之处
D.使用params做数组参数的关键字时,params 数组可以不是最后一个参数
二、填空题(本大题共8小题,每题5分,共40分)
21.在C#中,使用______关键字可以定义一个虚方法,该方法可以在派生类中被重写。
22._________是用一个框架把数据和代码组合在一起,形成一个对象。
23.在C#中定义接口时,使用的关键字是______。
24.如果一个属性里只有get访问器,那么该属性为__________属性。
25.若要让多个对象共享同一份数据,可将该数据声明为__________字段。
26.在C#中,传入某个属性的 SET 方法的隐含参数的名称是________。
27.在C#中,若方法不返回值,返回类型为 _________。
28._________是类的行为。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$