C#中关于继承、接口、抽象类的练习

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

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

  1. override
  2. overload
  3. static
  4. Inherit

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

public interface IFile{

    int A;

    int delFile()  {

        A = 3;

    }

    void disFile();

}

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

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

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

  1. 抽象基类可以包含非抽象方法,而接口只能包含抽象方法
  2. 抽象基类可以被实例化,而接口不能被实例化
  3. 抽象基类不能被实例化,而接口可以被实例化
  4. 抽象基类就是接口,它们之间无差别

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

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

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

  1. Override
  2. New

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

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

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

注意:虚方法就是可能要被重写的方法,他也是一个普通的方法,拥有方法体,因此a错误。

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

   }

}

  1.   A.F    B.F    A.G   B.G
  2.   A.F    B.F    B.G   B.G
  3.   A.F    A.F    B.G   B.G
  4.   B.F    B.F    B.G   B.G

分析:考察C#中对于方法进行重写的2中方法打的区别。隐藏方法和虚方法的区别是,当用父类声明对象,而用子类去构造对象的时候,虚方法调用的是子类中重写的方法,隐藏方法调用的则是父类中的方法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值