java能否使内部类的方法只能由外部类访问?
假设我有一个外部类和一个内部类。是否可以编写一个内部类方法,这样它只能由外部类访问,而不能由外部类之外定义的类访问,例如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;
}
}
# 1 楼答案
如果将内部类的方法设为私有,则只能从内部类和外部类访问它们
如果您试图从MyInnerClass或MyOuterClass之外的任何其他类调用上述方法,您将得到一个错误,因为没有其他类知道该方法的实例来自何处。希望这有帮助:)