文档库 最新最全的文档下载
当前位置:文档库 › 面向对象编程 - 练习题

面向对象编程 - 练习题

面向对象编程 - 练习题
面向对象编程 - 练习题

C#面向对象编程-练习题

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

a)override

b)overload

c)static

d)Inherit

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

public interface IFile{

int A;

int delFile() {

A = 3;

}

void disFile();

}

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

a)以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误

b)以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体

的实现函数

c)代码void disFile();定义无错误,接口可以没有返回值

d)代码void disFile();应该编写为void disFile(){};

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

a)抽象基类可以包含非抽象方法,而接口只能包含抽象方法

b)抽象基类可以被实例化,而接口不能被实例化

c)抽象基类不能被实例化,而接口可以被实例化

d)抽象基类就是接口,它们之间无差别

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

a)建立一个新的杂志类Journal。

b)建立一个新的杂志类Journal,并继承TextBoook类。

c)建立一个基类Book和一个新的杂志类Journal,并让Journal类和TextBoook类

都继承于Book类。

d)不建立任何类,把杂志图书的某些特殊属性加到TextBoook类中。

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

a)Override

b)New

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

A.接口中可以有虚方法。 B.一个类可以实现多个接口。

C.接口不能被实例化。 D.接口中可以包含已实现的方法。

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

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"); }

public override void G() { Console.WriteLine("B.G"); } }

class override_new{

static void Main() {

Son b = new Son();

Father a = b;

a.F();

b.F();

a.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.Fun2(a);

}

}

9.在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+" 重写的方法";

Console.WriteLine(str);

}

class DefaultInitializerApp

{

public static void Main()

{

B b=new B();

A a=b;

a.printStr("打印");

b.printStr("打印");

Console.ReadLine();

}

}

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

a.打印重写的方法打印重写的方法

b.打印打印重写的方法

c.打印

d.程序有误,不能运行

11.在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进行重载(选一项)

a>override

b>new

c>static

d>virtual

12.请问,此程序输出结果是()

abstract class BaseClass{

public virtual void MethodA(){Console.WriteLine("BaseClass");}

public virtual void MethodB(){}

}

class Class1: BaseClass{

public void MethodA(){Console.WriteLine("Class1");}

public override void MethodB(){}

}

class Class2: Class1{

new public void MethodB(){}

}

class MainClass{

public static void Main(string[] args){Class2 o = new Class2();o.MethodA(); } }

A. BaseClass

B. BassClass Class1

C. Class1

D. Class1 BassClass

13.请问,此程序输出结果是()

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()"); } public static void Main() { A a = new B();a.Fun(); } }

A. A B A.Fun()

B. A B B.Fun()

C. B A A.Fun()

D. B A B.Fun()

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

A. 接口中可以有虚方法。

B. 一个类可以实现多个接口。

C. 接口不能被实例化。

D. 接口中可以包含已实现的方法。

15.以下关于C#代码的说法正确的是()。(选择一项)Public abstract Animal

{

Public abstract void Eat();

Public void Sleep()

{

}

}

a.该段代码正确

b.代码错误,因为类中存在非抽象方法

c.代码错误,因为类中的方法没有实现

d.通过代码“Animal an = new Animal();”可以创建一个Animal对象

16.在c#中,关于继承和接口,以下说法正确的是() (单选)

a. c#允许许多接口实现,也允许多重继承

b.c#允许多接口实现,但不允许多重继承

c.c#不允许多接口实现,但允许多重继承

d.c#不允许多重接口实现,也不允许多重继承

17. 在C#中,已知下列代码的运行结果是“老虎吃动物”,请问在空白处1和空白处2 分别应该填写的代码是()

Public class Animal

{

Public 空白处1 void Eat()

{

Consone.WriteLine(“我要吃”);

}

}

Public class Tiger:Animal

{

Public 空白处2 void Eat()

{

Consone.WriteLine(“老虎吃动物”);

}

Public calssTest

{

Static void Main()

{

Animal an = new Tiger();

an.Eat;

}

}

}

a)Virtual , new

b)override , virtual

c)virtual , override

d)new , virtual

18. 在C#中,下列关于抽象类和接口的说法,正确的是)()(选择一项)

a) 在抽象类中,所以的方法都是抽象方法

b) 继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法

c) 在接口中,可以有方法实现,在抽象类中不能有方法实现

d) 一个类可以从多个接口继承,也可以从多个抽象类继承

19. 关于以下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方法没有实现

20. 在c#中某程序员定义了一个IDataBase接口,以及实现该接口的类CDataBase ,下列关于该段代码

说法正确的是()(选择一项)

public interface IDataBase

{

void OpenTable(string tableName);

void UpDataTable(string tableName);

}

public class CDataBase:IDataBase

{

public void OpenTable(string tableName)

{

Console.WriteLine("打开数据表");

}

public void UpdataTable(string tableName)

{

Console.WriteLine("更新数据表");

}

static void Main()

{

CDataBase db = new CDataBase();

db.OpenTable("Customers");

}

}

a)该段代码错误,因为在定义接口时,接口中的方法没有提供实现

b)该段代码错误,因为接口中声明的方法不是公有的,应此在CDataBase类中不能访问接口中的方法

c)该段代码正确,同时由于客户没有调用UpdataTable方法,可以把CDataTable类中的UpdataTable去掉,代码仍然正确

d)该段代码正确,但是如果在IDataBase 接口中声明一个方法void Execute(string sql); 则必须在CDataBase中实现该方法

21.c#中下列代码运行结果是(a)(选择一项)

public class Student{

public virtual void Exam(){

Console.WriteLine("学生都要考试");

}

}

public class Undergraduate:Student{

public new void Exam(){

base.Exam();

Console.WriteLine("大学生有选择考试科目的权利");

}

}

public class Test{

static void Main() {

Student stu = new Undergraduate();

stu.Exam();

}

}

a)学生都要考试

b)大学生有选择考试科目的权利

c)大学生都要考试

大学生有选择考试科目的权利

d)学生都要考试

学生都要考试

22.c#中下列代码的运行结果是()(选择一项)

struct Student{

public int age;

public string name;

public Student(int age,string name){

this.age=age;

https://www.wendangku.net/doc/f48657856.html,=name;

}

}

public class Test{

static void Mian(){

Student stu1= new Student(18,"小方");

Student stu2= new Student(24,"小刚");

stu2=stu1;

stu1.age=30;

https://www.wendangku.net/doc/f48657856.html,="小燕";

Console.WriteLine(stu2.age);

Console.WriteLine(https://www.wendangku.net/doc/f48657856.html,);

}

}

a)18 小方

b)18 小燕

c)30 小燕

d)30 小方

23.在C#中,下列()关键字用于重写基类的虚拟方法。(选择一项)

a)override

b)new

c)base

d)virtual

相关文档