当前位置:  开发笔记 > 编程语言 > 正文

接口继承

如何解决《接口继承》经验,为你挑选了2个好方法。

如果我有一个界面:

interface IFoo
{
    int Offset {get;}
}

我想要这个,可以吗:

interface IBar: IFoo
{   
    int Offset {set;}
}

那么IBar的消费者将能够设定或获得?



1> AnthonyWJone..:

这很接近,但没有香蕉.

interface IFoo
{
    int Offset { get; }
}

interface IBar : IFoo
{
    new int Offset { set; }
}

class Thing : IBar
{
    public int Offset { get; set; }
}

注意newIBar中的关键字,但这会覆盖IFoo的get访问器,因此IBar没有get.因此,没有你不能实际创建IBar,只需添加一组,同时保持现有的get.



2> Arjan Einbu..:

不,你不能!

(我正打算写"是",但在阅读了安东尼的帖子后,尝试了一些调整,我发现答案是否定的!)

class FooBar : IFoo, IBar
{
    public int Offset{get;set;}
}

(安东尼指出会产生警告,可以通过添加"新"关键字来修复.)

在尝试代码时:

IBar a = new FooBar();
a.Offset = 2;
int b = a.Offset;

最后一行将生成编译错误,因为您隐藏了IBar的Offset setter.

编辑:修复了类中属性的accesibillity修饰符.谢谢安东尼!

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有