3.面向对象编程 练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#面向对象编程-练习题
1.C#中的方法重写使用关键字(a)。
a)override
b)overload
c)static
d)Inherit
2.以下的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):
class Father{
public void F() { Console.WriteLine("A.F"); }
public virtual void G() { Console.WriteLine("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.写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B:A {
public override void Fun1(int i)
{
base.Fun1(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#代码:
class A
{
public virtual void printStr(string str)
{
Console.WriteLine(str);
}
}
class B:A
{
public override void printStr(string str)
{
str=str+" 重写的方法";