我有两个类,一个接口
分别是A,IB,C
1.IB接口中定义了一个add方法
2.A继承于IB,A实现了add方法.
3.在C类中实例化A A a = new A(),a.add()可以访问到,我不想让a.add()直接访问.能不能通过IB b = new A();来访问.
b.add();这样来访问

解决方案 »

  1.   

    可以通过IB b = new A();来访问.
    b.add();这样来访问但前提是 A 实现了 IB 接口,
    也就是说, new A().add() 可以被访问, 上面的代码才可以正常执行。
      

  2.   

    能通过IB b = new A();
    b.add();
      

  3.   

    但是我不想让直接实例化的A a = new A(); a.add() 不让他这样能访问,只能通过接口怎么弄?就是说 a点,就不让他出来这个方法.
      

  4.   

    能不能通过IB b = new A();来访问. 
    b.add();这样来访问

    可!
      

  5.   

    这样是合理的就把 A a = new A()
    a.add()屏避了就行了.关键我不知道怎么做
      

  6.   

    interface IB
    {
        void add();
    }
    class A : IB
    {
        void IB.add() {}   //这时明显的接口实现
        //public void add() { }    //隐式的接口实现
    }
    class C
    {
        static void Main()
        {
            A a = new A();
            //a.add();   //会报编译错误, 如果add是隐式的接口实现,就可以这样调用
            IB b = a;
            b.add();   //正确
        }
    }