跳到主要内容

任务六 同步训练

知识点​

一、填空题​

1. 面向对象编程简称 ________,它是一种编程思想,并不是一个编程技术。

答案:OOP。OOP = Object-Oriented Programming,面向对象编程。

2. 面向对象的三大技术特征:、、________。

答案:封装;继承;多态。这三大特征是面向对象编程的核心。

3. 设计类时,将本类型相关的 ________ 和 ________ 都放入类内统一管理,将用户需要的内容暴露给用户,细节进行隐藏。

答案:数据;操作(方法)。封装将数据和操作数据的方法放在一起,隐藏细节。

4. 默认情况下,如果什么都不写,成员变量或成员方法的访问、修改权限默认是 ________ 类型。

答案:private。C#中类成员的默认访问修饰符是private。

5. 委托是一种 ________ 类型变量,用于存储某个 ________ 的内存地址。

答案:引用;方法。委托是引用类型,存储的是方法的引用(内存地址)。

6. 方法的 、 决定了一个方法的签名。

答案:参数类型;参数个数。方法签名由参数类型和参数个数决定(也包含参数顺序)。

7. 在C#中定义接口时,使用的关键字是 ________。

答案:interface。使用 interface 关键字声明接口。

8. 在C#中定义委托时,使用的关键字是 ________。

答案:delegate。使用 delegate 关键字声明委托。


二、选择题​

1. 只允许类内方法访问、修改的权限控制符是( )。

  • A. private
  • B. protected
  • C. internal
  • D. public

答案:A。private私有访问修饰符,只能在定义它的类内部访问。

2. 任何方法都可以对其访问、修改的权限控制符是( )。

  • A. private
  • B. protected
  • C. internal
  • D. public

答案:D。public公共访问修饰符,任何代码都可以访问。

3. 类的以下特性中,可以用于方便地重用已有的代码和数据的是( )。

  • A. 多态
  • B. 封装
  • C. 继承
  • D. 抽象

答案:C。继承允许子类重用父类的代码和数据,是实现代码重用的重要手段。

4. 以下关于类和对象的说法中,不正确的是( )。

  • A. 类包含了数据和对数据的操作
  • B. 一个对象一定属于某个类
  • C. 密封类不能被继承
  • D. 可由抽象类生成对象

答案:D。抽象类不能直接实例化生成对象,只能通过其派生类来创建对象。

5. 下列说法正确的是( )。

  • A. 不需要定义类,就能创建对象
  • B. 属性可以定义为抽象的
  • C. 对象中必须有属性和方法
  • D. 常量不能作为类成员

答案:B。属性可以定义为抽象的(abstract),在抽象类中声明抽象属性,由派生类实现。

6. 下列说法正确的是( )。

  • A. 允许一个子类有多个父类
  • B. 某个类是一个类的子类,它仍有可能成为另一个类的父类
  • C. 一个父类只能有一个子类
  • D. 继承关系最多不能超过4层

答案:B。C#支持单继承但可以传递,一个类可以是某个类的子类同时也是另一个类的父类。

7. 下面有关静态方法的描述中,正确的是( )。

  • A. 静态方法属于类,不属于实例
  • B. 静态方法可以直接用类名调用
  • C. 静态方法中,可以访问非静态的局部变量
  • D. 静态方法中,可以访问静态的变量

答案:A、B、D。静态方法属于类,可通过类名调用,可以访问静态变量。但不能直接访问非静态成员(C错误)。

8. 在类的外部可以被访问的成员是( )。

  • A. public成员
  • B. private成员
  • C. protected成员
  • D. protected internal成员

答案:A。只有public成员可以在类的外部被任意访问。private只能在类内,protected只能被子类访问。

9. 面向对象编程中的"继承"的概念是指( )。

  • A. 对象之间通过消息进行交互
  • B. 派生自同一个基类的不同类的对象具有一些共同特征
  • C. 对象的内部细节被隐藏
  • D. 派生类对象可以不受限制地访问所有的基类对象

答案:B。继承使派生自同一基类的不同类具有共同的属性和方法,体现了代码的重用。

10. 在C#的类结构中,class关键字前面的关键字表示访问级别,下面关键字表示该类只能被这个类的成员或派生类成员访问的是( )。

  • A. public
  • B. private
  • C. internal
  • D. protected

答案:D。protected表示只有该类和其派生类可以访问。

11. 下列类型中,不属于引用类型的是( )。

  • A. String
  • B. int
  • C. Class
  • D. Delegate

答案:B。int是值类型,String、Class、Delegate都是引用类型。

12. 下列关于C#面向对象应用的描述中,正确的是( )。

  • A. 派生类是基类的扩展,派生类可以添加新的成员,也可去掉已经继承的成员
  • B. abstract方法的声明必须同时实现
  • C. 声明为sealed的类不能被继承
  • D. 接口像类一样,可以定义并实现方法

答案:C。sealed修饰符表示密封类,不能被继承。A错误(不能去掉继承的成员),B错误(abstract方法没有实现),D错误(接口不包含方法实现)。

13. C#中MyClass为一自定义类,其中有方法 public void Hello(),使用 MyClass obj = new MyClass() 创建对象后,访问Hello方法是( )。

  • A. obj.Hello()
  • B. obj::Hello()
  • C. MyClass.Hello()
  • D. MyClass::Hello()

答案:A。通过对象名加点号调用实例方法:obj.Hello()。::是C++的作用域运算符,C#中不使用。

14. 在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成( )。

  • A. sealed方法
  • B. public方法
  • C. virtual方法
  • D. override方法

答案:C。virtual虚方法允许在派生类中通过override重写,实现多态。

15. C#的引用类型包括类、接口、数组、委托、object和string。其中object( )根类。

  • A. 只是引用类型的
  • B. 只是值类型的
  • C. 只是string类型的
  • D. 是所有值类型和引用类型的

答案:D。object是所有类型(包括值类型和引用类型)的最终基类。


三、操作题​

题目要求:

定义一个员工类(Employee):

属性字段:公司名字、名字、工号

行为:

  • 自我介绍(IntroduceSelf):输出"我是xxx公司的xxx,工号为xxx"
  • 打电话(call):输出"给xxx打电话,我是xxx公司的xxx,工号为xxx"

编写主方法(Main),创建两名员工:

  1. 阿里集团王飞1001
  2. 阿里集团孙婷1002

使用对象进行初始化,然后进行拜访业务:

  1. 王飞拨打"13501234567"
  2. 孙婷拨打"13507654321"

参考代码:

public class Employee
{
private string company; // 公司名字
private string name; // 名字
private string id; // 工号

// 构造函数
public Employee(string company, string name, string id)
{
this.company = company;
this.name = name;
this.id = id;
}

// 自我介绍
public void IntroduceSelf()
{
Console.WriteLine("我是" + company + "公司的" + name + ",工号为" + id);
}

// 打电话
public void Call(string phoneNumber)
{
Console.WriteLine("给" + phoneNumber + "打电话,我是" + company + "公司的" + name + ",工号为" + id);
}
}

class Program
{
static void Main(string[] args)
{
Employee wangfei = new Employee("阿里集团", "王飞", "1001");
Employee sunting = new Employee("阿里集团", "孙婷", "1002");

wangfei.IntroduceSelf();
wangfei.Call("13501234567");

sunting.IntroduceSelf();
sunting.Call("13507654321");

Console.ReadLine();
}
}

运行结果:

我是阿里集团公司的王飞,工号为1001
给13501234567打电话,我是阿里集团公司的王飞,工号为1001
我是阿里集团公司的孙婷,工号为1002
给13507654321打电话,我是阿里集团公司的孙婷,工号为1002