2017-04-15 59 views
1

可以说我有一个外部类和一​​个内部类。是否可以编写一个内部类方法,以便它只能由外部类访问,而不能由外部类之外定义的类访问,例如, MyForeignClass你可以制作一个只能由外部类访问的内部类的方法吗?

class MyForeignClass { 
    MyForeignClass() { 
     MyOuterClass instance = new MyOuterClass(); 
     MyInnerClass innerClassInstance = instance.getMyInnerClassInstance(); 
     // illegal method call, only MyOuterClass can call this 
     innerClassInstance.privateInnerClassMethod(); 
    } 
} 

class MyOuterClass { 
    class MyInnerClass { 
     MyInnerClass() {} 
     void publicInnerClassMethod() { 
      // accessible from outside MyOuterClass 
     } 
     void privateInnerClassMethod() { 
      // accessible from inside MyOuterClass 
     } 
    } 

    MyInnerClass instance; 

    MyOuterClass() { 
     instance = new MyInnerClass(); 
     instance.privateInnerClassMethod(); 
    } 

    MyInnerClass getMyInnerClassInstance() { 
     return instance; 
    } 

} 
+8

让它私人? –

+0

声明内部类是一个私有类。 –

+1

@GlenPierce不,因为'publicInnerClassMethod'应该是“可以从MyOuterClass之外访问的”。使课程“私人”排除这一点。 –

回答

4

如果您将内部类的方法设置为private,它们将只能从内部类和外部类访问。

class MyOuterClass 
{ 
    class MyInnerClass 
    { 
     private void doSomething(){} 
    } 
} 

如果你想从任何其他类,但MyInnerClass或MyOuterClass上面的方法,你会得到一个错误,因为没有其他的类会知道其中方法的该实例来from.Hope这有助于:)

+0

的确,我会补充说,作为我的答案的一部分 – Aaron

+1

完成*竖起大拇指* – Aaron

+0

感谢您的解释@Aaron :) – visc

相关问题