1.C#中的方法重写使用关键字( a )。
2.以下的C#代码,试图用来定义一个接口:
c#public interface IFile{
int A;//不能包含数字成员
int delFile() {
A = 3;//方法不能有函数体
}
void disFile();//方法声明
}
关于以上的代码,以下描述错误的是( d )。(选择一项)
相关信息
接口:只能包含函数声明,不能包含函数体
3.在C#中,接口与抽象基类的区别在于( a )。
4.在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计,则下面最好的设计应该是( c )。
5.可以使用( a )关键字重写方法。
6.以下叙述正确的是:( bc )
相关信息
接口:只能包含函数声明,不能包含函数体
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
}
}
相关信息
子类构造函数被调用,都为调用重写后的方法
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 )符号进行分割。(选择一项)
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 )。(选择一项)
相关信息
子类构造函数被调用,都为调用重写后的方法