2023-10-07
自我提升
0

1.C#中的方法重写使用关键字( a )。

  • a.override
  • b.overload
  • c.static
  • d.Inherit

2.以下的C#代码,试图用来定义一个接口:

c#
public interface IFile{ int A;//不能包含数字成员 int delFile() { A = 3;//方法不能有函数体 } void disFile();//方法声明 }

关于以上的代码,以下描述错误的是( d )。(选择一项)

  • a.以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误
  • b.以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数
  • c.代码void disFile();定义无错误,接口可以没有返回值
  • d.代码void disFile();应该编写为void disFile(){}; //接口中不能去实现函数

相关信息

接口:只能包含函数声明,不能包含函数体

3.在C#中,接口与抽象基类的区别在于( a )。

  • a.抽象基类可以包含非抽象方法,而接口只能包含抽象方法
  • b.抽象基类可以被实例化,而接口不能被实例化
  • c.抽象基类不能被实例化,而接口可以被实例化
  • d.抽象基类就是接口,它们之间无差别

4.在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计,则下面最好的设计应该是( c )。

  • a.建立一个新的杂志类Journal。
  • b.建立一个新的杂志类Journal,并继承TextBook类。
  • c.建立一个基类Book和一个新的杂志类Journal,并让Journal类和TextBoook类都继承于Book类。
  • d.不建立任何类,把杂志图书的某些特殊属性加到TextBoook类中。

5.可以使用( a )关键字重写方法。

  • a.Override
  • b.New

6.以下叙述正确的是:( bc )

  • A. 接口中可以有虚方法。
  • B. 一个类可以实现多个接口。
  • C. 接口不能被实例化。
  • D. 接口中可以包含已实现的方法。

相关信息

接口:只能包含函数声明,不能包含函数体

7.下列代码输出为( b):

c#
class Father{ //父类 public void F() { Console.WriteLine("A.F"); } //F方法输出A.F public virtual void G() { Console.WriteLine("A.G"); } //虚方法输出A.G } class Son: Father{ //子类继承父类 new public void F() { Console.WriteLine("B.F"); }//隐藏了父类中的方法,父类中的F方法还存在 public override void G() { Console.WriteLine("B.G"); }//重写了父类中的方法,父类中的G方法就不存在了 } class override_new{ static void Main() { Son b = new Son(); //子类声明 Father a = b; //父类声明 a.F();//通过父类声明的对象 调用隐藏方法,会调用父类中的 A.F b.F();//通过子类声明的对象 调用隐藏方法,会调用子类中的 B.F a.G();// B.G b.G();//B.G } }
  • A. A.F B.F A.G B.G
  • B. A.F B.F B.G B.G
  • C. A.F A.F B.G B.G
  • D. B.F B.F B.G B.G

相关信息

子类构造函数被调用,都为调用重写后的方法

8.写出程序的输出结果:

c#
public class A //父类 { public virtual void Fun1(int i) //虚方法Fun1 { Console.WriteLine(i); //输出所给的参数 } public void Fun2(A a) //普通方法Fun2 { a.Fun1(1); //调用a对象里的Fun1 Fun1(5); //再调用自身对象Fun1 } } public class B:A { //子类继承父类 public override void Fun1(int i) 重写Fun1 { base.Fun1(i+1); //调用父类Fun1(i+1) 即调用Console.WriteLine(i+1); } public static void Main() { B b=new B(); A a=new A(); a.Fun2(b);//b.Fun1(1) a.Fun1(5) //2 5 b.Fun2(a);//a.Fun1(1) b.Fun1(5)// 1 6 } }

答案:2 5 1 6

9.在C#中,允许多接口继承,从多个接口时,使用“:”后跟继承的接口的名字,多个接口名称之间使用( c )符号进行分割。(选择一项)

  • a.”.’
  • b.”->”
  • c.”,”
  • d.”::”

10.阅读以下的C#代码:

c#
class A //父类 { public virtual void printStr(string str) //虚方法 { Console.WriteLine(str); //打印传递的参数 } } class B:A //子类继承父类 { public override void printStr(string str) //重写方法 { str=str+" 重写的方法"; Console.WriteLine(str);//把传递的参数和" 重写的方法"一起打印 } } class DefaultInitializerApp { public static void Main() { B b=new B(); A a=b; a.printStr("打印"); b.printStr("打印"); Console.ReadLine(); } }

运行程序后将在控制台窗口打印( a )。(选择一项)

  • a. 打印 重写的方法 打印 重写的方法
  • b. 打印 打印 重写的方法
  • c. 打印
  • d. 程序有误,不能运行

相关信息

子类构造函数被调用,都为调用重写后的方法