大学MOOC C#面向对象程序设计(绵阳职业技术学院)1207230806 最新慕课完整章节测试答案
第四周
第四周 单元测验
1、单选题:
在类作用域中能够通过直接使用该类的( )成员名进行访问
选项:
A: 私有
B: 公用
C: 保护
D: 任何
答案: 【 任何】
2、单选题:
在类的成员中,用于存储类的属性值是( )
选项:
A: 属性
B: 方法
C: 事件
D: 成员变量
答案: 【 成员变量】
3、单选题:
类 ClassA有一个名为M1 的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则修饰 M1 方法时一定使用了( )修饰符。 ClassA obj=new Class A(); ClassA.M1();
选项:
A: public
B: static
C: private
D: virtual
答案: 【 static】
4、单选题:
在类的定义中,类的( )描述了该类的对象的行为特征。
选项:
A: 类名
B: 方法
C: 所属的名字空间
D: 私有域
答案: 【 方法】
5、单选题:
分析下列 C#语句,注意类 MyClass 没有访问修饰符: namespace ClassLibrary1{ class MyClass { public class subclass{ int i; }} } 若必须为类 MyClass 添加访问修饰符,并使 MyClass 的可访问域保持不变,则应选择 ( )
选项:
A: private
B: protected
C: internal
D: public
答案: 【 public】
6、单选题:
下列关于索引器说法不正确的有
选项:
A: 索引器不指向内存位置
B: 索引器可以有非整数下标
C: 索引器不指向get 和set访问器
D: 索引器可以重载
答案: 【 索引器不指向get 和set访问器】
7、单选题:
在类的成员中,用于存储属性值的是( )。
选项:
A: 属性
B: 方法
C: 事件
D: 成员变量
答案: 【 成员变量】
8、单选题:
下列说法正确的有
选项:
A: 属性通过使用访问器来读写数据库中的数据,从而为保护数据库中字段提供了可能
B: 属性通过使用访问器来读写类中的数据,从而为保护数据库中字段提供了可能
C: 属性通过使用访问器来读写类中的字段,从而为保护类中字段提供了可能
D: 属性通过使用访问器来读写数据库中的数据,从而为保护类中字段提供了可能
答案: 【 属性通过使用访问器来读写类中的字段,从而为保护类中字段提供了可能】
9、单选题:
类 MyClass 中,下列哪条语句定义了一个只读的属性 Count?
选项:
A: private int Count;
B: private int count; public int Count{ get{return count;} }
C: public readonly int Count;
D: public readonly int Count { get{ return count;} set{count = value;} }
答案: 【 private int count; public int Count{ get{return count;} }】
10、单选题:
类 MyClass 中有下列方法定义: public void testParams(params int[] arr) { Console.Write ("使用 Params 参数!"); } public void testParams(int x,int y) { Console.Write ("使用两个整型参数!"); } 请问上述方法重载有无二义性?若没有,则下列语句的输出为( )。 MyClass x = new MyClass(); x.testParams(0); x.testParams(0,1); x.testParams(0,1,2);
选项:
A: 有语义二义性;
B: 使用 Params 参数!使用两个整型参数!使用 Params 参数!
C: 使用 Params 参数!使用 Params 参数!使用 Params 参数!
D: 使用 Params 参数!使用两个整型参数!使用两个整型参数!
答案: 【 使用 Params 参数!使用两个整型参数!使用 Params 参数! 】
11、单选题:
有两个具有相同名字的函数,当只满足下列选项的( )条件时,它们不能算作重载函数。
选项:
A: 返回值的类不同
B: 参数数目不同
C: 参数类型不同
D: 参数的顺序不同
答案: 【 参数的顺序不同】
12、单选题:
下面代码表示成员重载的是( )。
选项:
A: class Myclass{ public void fun() { Console.WriteLine(“无参数”); } public void fun(int a) { Console.WriteLine(“有一个整型的参数”); } }
B: class Myclass{ public int a; public void fun() { Console.WriteLine(“无参数”); } } class Myclass1 { public void fun(int a) { Console.WriteLine(“有一个整型的参数”); } }
C: class Myclass{ public int a; public void fun() { Console.WriteLine(“无参数”); } public void Fun(int a) { Console.WriteLine(“有一个整型的参数”); } }
D: 以上都不是
答案: 【 class Myclass{ public void fun() { Console.WriteLine(“无参数”); } public void fun(int a) { Console.WriteLine(“有一个整型的参数”); } }】
13、单选题:
关于 C#语言的方法,下列叙述中正确的是()
选项:
A: 方法的定义不能嵌套,但方法调用可以嵌套
B: 方法的定义可以嵌套,但方法调用不能嵌套
C: 方法的定义和调用都不能嵌套
D: 方法的定义和调用都可以嵌套
答案: 【 方法的定义不能嵌套,但方法调用可以嵌套】
14、单选题:
以下所列的个方法头部中,正确的是()
选项:
A: void play(var a:Integer,var b:integer)
B: void play(int a,b)
C: void play(int a,int b)
D: Sub play(a as integer,b as integer)
答案: 【 void play(int a,int b)】
15、单选题:
下列的()不是构造函数的特征。
选项:
A: 构造函数的函数名和类名相同
B: 构造函数可以重载
C: 构造函数可以带有参数
D: 可以指定构造函数的返回值
答案: 【 可以指定构造函数的返回值】
16、判断题:
C#中被static关键字修饰的变量,不能被重新赋值。 ( )
选项:
A: 正确
B: 错误
答案: 【 错误】
17、判断题:
C#中,void表示该方法无返回值。
选项:
A: 正确
B: 错误
答案: 【 正确】
18、判断题:
C#中的方法签名包含返回类型。
选项:
A: 正确
B: 错误
答案: 【 错误】
19、判断题:
在C#中,一个类中的所有方法都必须有一个唯一的方法签名。
选项:
A: 正确
B: 错误
答案: 【 正确】
20、判断题:
C#中的每个类都至少有一个构造函数,一个类如果没有定义构造函数,系统会自动为该类创建一个默认的构造函数。
选项:
A: 正确
B: 错误
答案: 【 正确】
21、判断题:
对象的this引用是对该对象本身的引用。
选项:
A: 正确
B: 错误
答案: 【 正确】
22、判断题:
C#中,子类不能继承父类中用private修饰的成员变量和成员方法
选项:
A: 正确
B: 错误
答案: 【 正确】
23、判断题:
所有的对象都通过引用传递参数。
选项:
A: 正确
B: 错误
答案: 【 正确】
24、判断题:
构造函数可以返回值。
选项:
A: 正确
B: 错误
答案: 【 错误】
25、判断题:
属性必须定义get和set存取程序。
选项:
A: 正确
B: 错误
答案: 【 错误】
26、判断题:
static成员即使该类型没有对象存在也可以引用。
选项:
A: 正确
B: 错误
答案: 【 正确】
27、判断题:
类的static成员可以通过该类的实例来引用。
选项:
A: 正确
B: 错误
答案: 【 错误】
28、判断题:
不同的命名空间中不能有名称相同的类或方法。
选项:
A: 正确
B: 错误
答案: 【 错误】
29、判断题:
在C#中,可以为类的字段指定默认值。
选项:
A: 正确
B: 错误
答案: 【 正确】
30、判断题:
在C#中,类的静态成员方法不能对非静态的数据成员进行操作。
选项:
A: 正确
B: 错误
答案: 【 正确】
31、填空题:
类中声明的属性往往具有get()和( ) 两个访问器
答案: 【 set()】
32、填空题:
一般将类的构造方法声明为( )访问权限。如果声明为private,就不能创建该类的对象
答案: 【 public或公有】
33、填空题:
阅读下面代码,写出输出结果:public class A{ private int length = 5; private string[] names = new string[5]; public int Length { get { return this.length; } } public string this[int index] { get { return names[index]; } set { names[index] = value; } }};public class Test{ static void Main() { A a = new A(); for (int i = 0; i < a.Length; i++) a[i] = i.ToString(); Console.WriteLine(a[3]); }}
答案: 【 3】
第五周
第五周 单元测验
1、单选题:
在C#中,定义派生类时,指定其基类应使用的语句是( )。
选项:
A: Inherits
B: :
C: Class
D: Overrides
答案: 【 :】
2、单选题:
继承具有( ),即当基类本身也是某一类的派生类时,派生类会自动继承间接基类的成员。
选项:
A: 规律性
B: 传递性
C: 重复性
D: 多样性
答案: 【 传递性】
3、单选题:
在.NET中,关于组件多态性的陈述,错误的是。
选项:
A: 可以通过接口实现多态性
B: 可以通过抽象类实现多态性
C: 多态性不只是重载或重写,而是智能重写
D: 在多态性中,需要调用哪个方法的决定是在设计时做出的
答案: 【 在多态性中,需要调用哪个方法的决定是在设计时做出的】
4、单选题:
以下关于继承的说法错误的是( )。
选项:
A: .NET框架类库中,object类是所有类的基类
B: 派生类不能直接访问基类的私有成员
C: protected修饰符既有公有成员的特点,又有私有成员的特点
D: 基类对象不能引用派生类对象
答案: 【 基类对象不能引用派生类对象】
5、单选题:
对下面的代码说法正确的是( )class Baseclass { protected Baseclass(string a, string b) { Console.WriteLine("基类中构造函数"); } } class Derivcedlcass : Baseclass { public Derivcedlcass(string a, string b) : base(a, b) { Console.WriteLine("派生类中的构造函数"); } }
选项:
A: 代码无错误,派生类可以实例化,基类只有通过派生类实例化
B: 代码有错误,派生类的 base 关键字中不应带有参数
C: 代码无错误,基类可以实例化
D: 代码有错误,base关键字中的参数应改为"base(c,d)"
答案: 【 代码无错误,派生类可以实例化,基类只有通过派生类实例化】
6、单选题:
关于虚方法实现多态,下列说法错误的是( )。
选项:
A: 定义虚方法使用关键字virtual
B: 关键字virtual可以与override一起使用
C: 虚方法是实现多态的一种应用形式
D: 派生类是实现多态的一种应用形式
答案: 【 关键字virtual可以与override一起使用】
7、单选题:
在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进行重载
选项:
A: Override
B: new
C: static
D: virtual
答案: 【 Override】
8、单选题:
下面程序运行结果是abstract class BaseClass { public virtual void MethodA() { Console.WriteLine("BaseClass"); } public virtual void MethodB() { } } class Class1 : BaseClass { new public void MethodA() { Console.WriteLine("Class1"); } public override void MethodB() { } } class Class2 : Class1 { new public void MethodB() { } static void Main(string[] args) { Class2 A = new Class2(); A.MethodA(); A.MethodB(); } }
选项:
A: BaseClass
B: Class1
C: BaseClass Class1
D: Class1BaseClass
答案: 【 Class1】
9、单选题:
下列关于抽象类的说法错误的是( )。
选项:
A: 抽象类可以实例化
B: 抽象类可以包含抽象方法
C: 抽象类可以包含抽象属性
D: 抽象类可以引用派生类的实例
答案: 【 抽象类可以实例化】
10、单选题:
下面对抽象类描述不正确的是______。
选项:
A: 抽象类只能作为基类使用
B: 抽象类不能定义对象
C: 抽象类可以实例对象
D: 可以实现多态
答案: 【 抽象类可以实例对象】
11、单选题:
判断下列类 MyClass 的定义中哪些是合法的抽象类?
选项:
A: abstract class MyClass{ public abstract int getCount(); }
B: abstract class MyClass { abstract int getCount(); }
C: private abstract class MyClass{ abstract int getCount(); }
D: sealed abstract class MyClass { abstract int getCount(); }
答案: 【 abstract class MyClass{ public abstract int getCount(); }】
12、单选题:
下面对抽象类描述不正确的是( )。
选项:
A: 抽象类只能作为基类使用
B: 抽象类不能定义对象
C: 抽象类可以实例对象
D: 可以实现多态
答案: 【 抽象类可以实例对象】
13、单选题:
以下关于C#代码的说法正确的是()。 public abstract class person { public abstract void work(); public void Sleep() { Console.WriteLine("Sleep"); } }
选项:
A: 该段代码正确
B: 代码错误,因为类中存在非抽象方法
C: 代码错误,因为类中的方法没有实现
D: 通过代码“person p= new person();”可以创建一个person对象
答案: 【 该段代码正确】
14、单选题:
关于以下C#代码的说法正确的是public abstract class Animal { public abstract void Eat(); } public class Tiger : Animal { public override void Eat() { Console.WriteLine("老虎吃..."); } } public class Tigress : Tiger { static void Main() { Tigress tiger = new Tigress(); tiger.Eat(); } }
选项:
A: 代码正确,但没有输出
B: 代码正确,并且输出为"老虎吃...”
C: 代码错误,因为Tigress类没有实现抽象基类Animal中的抽象方法
D: 代码错误,因为抽象基类Animal的Eat方法没有实现
答案: 【 代码正确,并且输出为"老虎吃...”】
15、单选题:
下面成运行的结果是 abstract class A { public abstract void printStr(string str); } class B : A { public override void printStr(string str) { str = str + "override"; Console.WriteLine(str); } static void Main(string[] args) { A a = new B(); a.printStr("print "); } }
选项:
A: print
B: override
C: print override
D: 编译出错
答案: 【 print override】
16、单选题:
下面程序运行的结果是 public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B : A { public B() { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } } static void Main(string[] args) { B b = new B(); b.Fun(); }
选项:
A: A.Fun()
B: B.Fun()
C: AB A.Fun()
D: ABB.Fun()
答案: 【 ABB.Fun()】
17、单选题:
以下叙述正确的是:
选项:
A: 接口中可以有虚方法。
B: 一个类不能实现多个接口。
C: 接口不能被实例化。
D: 接口中可以包含已实现的方法。
答案: 【 接口不能被实例化。】
18、单选题:
接口 Animal 定义如下:public interface Animal { void Move(); } 则下列抽象类的定义中,哪些是不合法的? ()
选项:
A: abstract class Cat: Animal { abstract public void Move(); }
B: abstract class Cat:Animal { virtual public void Move() { Console.Write(Console.Write("Move!"); } }
C: abstract class Cat: Animal { public void Move() { Console.Write(Console.Write("Move!"); } }
D: abstract class Cat: Animal { public void Eat() { Console.Write(Console.Write("Eat!"); } }
答案: 【 abstract class Cat: Animal { public void Eat() { Console.Write(Console.Write("Eat!"); } } 】
19、单选题:
已知接口 IHello 和类 Base、MyClass 的定义如下: interface IHello{ void Hello(); } class Base : IHello{ public void Hello() { Console.WriteLine("Hello in Base!"
