我在com.practise.mypackageone.MyClass包中有一个课说
类MyClass有一个方法
/* Modifier */ void show()
{
// some code here
}
我希望只能从另一个包类
访问此方法com.practise.mypackagesecond.SecondClass
现在,如果我将方法设为公开,那么我可以访问任何我不想要的方法。 如果我保护它,那么SecondClass必须扩展MyClass才能访问它。
但是任何其他包类也可以扩展我的类来访问该方法。
我该如何防止这种情况?
答案 0 :(得分:4)
将类放在同一个包中,并使方法包为private(默认修饰符)。否则我认为你想要的东西是不可能实现的。
答案 1 :(得分:1)
第一个包中的类可以从第二个包中扩展一个类,看起来像这样,并且可以按照自己的意愿实现show()方法:
public static abstract class Showable {
abstract protected void show();
}
如果第二个包中只有一个类(例如,ViewManager)需要调用此方法,您可能希望将此Showable嵌入其中,以便只有这个类可以调用show()方法。
虽然这不是一个非常干净的设计。