声明类属性受保护还是公共?

时间:2011-07-23 08:51:45

标签: java android oop class-design

我在com.practise.mypackageone.MyClass包中有一个课说

类MyClass有一个方法

 /* Modifier  */ void show()
{
 // some code here
}

我希望只能从另一个包类

访问此方法

com.practise.mypackagesecond.SecondClass

现在,如果我将方法设为公开,那么我可以访问任何我不想要的方法。 如果我保护它,那么SecondClass必须扩展MyClass才能访问它。

但是任何其他包类也可以扩展我的类来访问该方法。

我该如何防止这种情况?

2 个答案:

答案 0 :(得分:4)

将类放在同一个包中,并使方法包为private(默认修饰符)。否则我认为你想要的东西是不可能实现的。

答案 1 :(得分:1)

第一个包中的类可以从第二个包中扩展一个类,看起来像这样,并且可以按照自己的意愿实现show()方法:

    public static abstract class Showable {
        abstract protected void show();
    }

如果第二个包中只有一个类(例如,ViewManager)需要调用此方法,您可能希望将此Showable嵌入其中,以便只有这个类可以调用show()方法。

虽然这不是一个非常干净的设计。