继承接口并设置访问修饰符

Posted

技术标签:

【中文标题】继承接口并设置访问修饰符【英文标题】:inheriting an interface and setting access-modifiers 【发布时间】:2014-04-06 22:04:21 【问题描述】:

想做“私人集;”。有没有其他选择?

public interface IFoo

    IEnumerable data  get;  set; 



public class Foo : IFoo

    public IEnumerable data
    
        get;
        private set;
    


【问题讨论】:

通过将其设为私有,您违反了接口的约定。 【参考方案1】:

您可以从界面中删除 set 访问器:

public interface IFoo

    IEnumerable data  get; 


或者你可以显式地实现接口,但是你需要以某种方式实现 set 方法:

public class Foo : IFoo


    public IEnumerable data
    
        get;
        private set;
    

    IEnumerable IFoo.data
    
        get  return data; 
        set  throw new NotSupportedException(); 
    

【讨论】:

以上是关于继承接口并设置访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章

C# 多接口继承不允许具有相同名称的公共访问修饰符

java中抽象类与接口中方法访问修饰符问题 (

第10讲:访问修饰符.重载.覆盖

C#中的默认访问修饰符

Android的java基本知识总结入门篇

类接口修饰符