A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FrancisTan 中级黑马   /  2014-7-8 19:41  /  1471 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FrancisTan 于 2014-7-9 08:02 编辑

就要面试了,有点小紧张呵呵,不过每天的学习还得继续。
想问下各位在C#中抽象类中的方法在派生类中都必须实现吗?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

10 个回复

倒序浏览
向晓伟 来自手机 中级黑马 2014-7-8 19:54:34
沙发
不一定啊。派生类可以是抽象的。
回复 使用道具 举报
//如果一个非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象成员。
abstract class A
{
       public abstract void F();
}

abstract class B: A
{
      public void G( ){  }
}

class C: B
{
      public override void F( ) {
            //F的具体实现代码
   }
}
//抽象类A 提供了一个抽象方法F。
//类B从抽象类A中继承,并且又提供了一个方法G;
//因为重载了抽象方法F,并且提供了对F的具体实现,则类C允许是非抽象的。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
抽象类里面也可以有普通方法的,从抽象类继承,子类必须重写父类的所有抽象方法,非抽象方法不用重写。
回复 使用道具 举报
当有人给你回复后,请及时把帖子编辑为提问结束,这样版主才给你加分。
回复 使用道具 举报
加油,祝你通过
回复 使用道具 举报
许庭洲 发表于 2014-7-8 20:25
//如果一个非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象成员。
abstract class A
{

谢谢,懂一点点了!
回复 使用道具 举报
许庭洲 发表于 2014-7-8 20:25
//如果一个非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象成员。
abstract class A
{

这里的C是抽象类吗?为什么前面不用加abstract?
回复 使用道具 举报
致立 中级黑马 2014-7-10 21:13:49
9#
对啊,必须实现。。这个事抽象类的一个特点,要不会报错的。
回复 使用道具 举报
FrancisTan 发表于 2014-7-9 08:02
谢谢,懂一点点了!

朋友,由override定义的是重写吧,不是重载。重载是方法的参数类型或个数不同的调用.
回复 使用道具 举报
绿箭 发表于 2014-7-12 20:08
朋友,由override定义的是重写吧,不是重载。重载是方法的参数类型或个数不同的调用. ...

啊这二个还不一样啊,我彻底凌乱了!不过,谢谢提醒~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马