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,并继承TextBoook类。
c) 建立一个基类Book和一个新的杂志类Journal,并让Journal类和TextBoook类
都继承于Book类。
d) 不建立任何类,把杂志图书的某些特殊属性加到TextBoook类中。 5.可以使用(a)关键字重写方法。 a) Override b) New
6.以下叙述正确的是:(b,c)
A.接口中可以有虚方法。 B.一个类可以实现多个接口。 C.接口不能被实例化。 D.接口中可以包含已实现的方法。 7.下列代码输出为( b): class Father{
public void F() { Console.WriteLine(\
public virtual void G() { Console.WriteLine(\}
class Son: Father{
new public void F() { Console.WriteLine(\隐藏父类的方法F(),但是父类中的方法F()还是存在
public override void G() { Console.WriteLine(\重写父类中的方法G(),父类中的方法已不存在 }
class override_new{ static void Main() { Son b = new Son(); Father a = b;//关键点
a.F();//通过父类声明的对象,调用隐藏方法时,会调用父类中的A.F() b.F();//通过子类声明的对象,调用隐藏方法时,会调用子类中的B.F() a.G();//方法F()是隐藏方法,方法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);//base关键字调用的是父类的方法 }
public static void Main() { B b=new B(); A a=new A();
a.Fun2(b);//结果:2,5
b.Fun2(a);//结果: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+\重写的方法\ Console.WriteLine(str); } }
class DefaultInitializerApp {
public static void Main() {
B b=new B();
A a=b;//这条语句的含义应该是把B类定义的对象b赋值给A类定义的对象a a.printStr(\打印\即a=b b.printStr(\打印\ Console.ReadLine(); } }
运行程序后将在控制台窗口打印( )。(选择一项) a a. 打印 重写的方法 打印 重写的方法 b. 打印 打印 重写的方法 c. 打印
d. 程序有误,不能运行 11.在C#的语法中,()关键字可以实现在派生类中对基类的虚函数进行重写(选一项)a> override
a
b> new c> static d> virtual
12.请问,此程序输出结果是()//c#中只有单重继承,所以子类只有一个父类 c abstract class BaseClass{
public virtual void MethodA(){Console.WriteLine(\public virtual void MethodB(){} }
class Class1: BaseClass{
public void MethodA(){Console.WriteLine(\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
a 13.请问,此程序输出结果是() public abstract class A {
public A() { Console.WriteLine('A'); }
public virtual void Fun() { Console.WriteLine(\ }
public class B: A {
public B() { Console.WriteLine('B'); }
public new void Fun() { Console.WriteLine(\
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.以下叙述正确的是():b A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
15.以下关于C#代码的说法正确的是()。(选择一项) a
Public abstract Animal {
相关推荐: