怎样使类中的某方法只能是通过特定构造函数实现的对象来引用!
比如现有一个类(Ca)有两个构造函数,Ca()和Ca(int i).类中有一个方法 execA,要实现通过Ca(int i)构造函数实现的对象可以引用方法execA,而通过Ca()的不行.

解决方案 »

  1.   

    方法1
    通过语言技巧来实现
    在Ca中设置个标志位flag,如果Ca()构造flag = 1,else flag = 0
    在execA()
    {
       if (flag == 1)
          throw new Exception();
    }
    方法2
    通过面向对象来实现
    class Ca
    {
    }
    class Ca_child1: Ca
    {
       Ca_child1(){}
    }class Ca_child2: Ca
    {
       Ca_child2(int i){}
       void execA(int i){}
    }
    使用:
    Ca ca1 = new Ca_child1();
    (Ca_child1)ca1.execA();//编译器报错
    Ca ca2 = new Ca_child2(20);
    (Ca_child2)ca2.execA();//正确