C#抽象方法重写

C#中抽象方法重写,如果抽象类中只有一个抽象方法,该抽象类没有字段、方法、构造函数,那么在子类中可以使用base关键字吗?如果可以,那base里面改写什么?... C#中抽象方法重写,如果抽象类中只有一个抽象方法,该抽象类没有字段、方法、构造函数,那么在子类中可以使用base关键字吗?如果可以,那base里面改写什么? 展开
 我来答
编云网
2015-12-02
知道答主
回答量:44
采纳率:100%
帮助的人:21.2万
展开全部

base可以用在抽象中,但不是这么用。看看语法就知道了,里面写的很明白“base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。”

所以使用base调用基类的方法的话,该方法必须是实例方法,抽象方法是不会出现在base.里面的。
例如:

 public abstract class A
    {
        public abstract int AA(int x);
    }

    public class B : A
    {

        public override int AA(int x)
        {
            return x + 1;
        }
    }

    public class C : B
    {
        public int CC(int x)
        {
            int i = base.AA(x);
            return i + 1;
        }
    }
depluin
推荐于2017-10-12 · TA获得超过3179个赞
知道大有可为答主
回答量:3378
采纳率:75%
帮助的人:2485万
展开全部
base可以用在抽象中,但不是这么用

你好好看看语法就知道了,里面写的很明白“base 关键字用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。指定创建派生类实例时应调用的基类构造函数。”

所以你使用base调用基类的方法的话,该方法必须是实例方法,抽象方法是不会出现在base.里面的。
追问
抽象类没有字段、方法、构造函数,那么在子类中可以使用base关键字吗?会报错吗?
追答
唔,都说了base只能用在实例上,你用在抽象上当然会报错了。
但是你可以针对实现了抽象的类用,比如
public abstract class A
{
public abstract int AA(int x);
}

public class B : A
{

public override int AA(int x)
{
return x + 1;
}
}

public class C : B
{
public int CC(int x)
{
int i = base.AA(x);
return i + 1;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2012-06-05 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6312万
展开全部
base是引用父类的关键字,一般在构造函数后面可以加:base()调用父类的构造函数,其次是在任意子类成员内使用base.父类成员,引用父类实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slievrly
2012-06-05 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:20.2万
展开全部
base是继承啊应该override
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式