默认访问类里面的公共访问方法..有什么意义?

时间:2014-09-21 14:21:54

标签: java access-modifiers

如果您进行类默认访问,并将该类中包含的方法标记为public,这意味着什么?换句话说,如果无法公开访问封闭类,如何公开访问方法?

3 个答案:

答案 0 :(得分:2)

当您覆盖某些公共方法或实现public时,通常需要

interface 我们来看一下Object#equals方法的简单例子。

虽然您的主类具有默认范围,但您无法在降低可见性的同时覆盖该方法。 所以你需要:public void equals(.......

答案 1 :(得分:2)

在某些情况下,可能需要保持方法公开,例如,当您的具有默认访问权限的类实现公共接口时。

当您根据接口定义API时,这很有用,并且您的default-access类实现了这些公共接口之一。您的API用户可以通过工厂方法实例化您的默认访问类。

答案 2 :(得分:0)

你的意思是这样的:

package p1;
class C1 {
    public void publicMethod() {}
}

在另一个包中:

package p2;
import p1.C1; // not allowed
public class C2 {
    C1 c1; // not allowed
    void test() {
        c1.publicMethod(); // not allowed
    }
}

如果是继承,可以使用publicMethod

package p1;
public class C2 extends C1 {}

现在publicMethod可以访问:

package p2;
import p1.C2; // C2 is public, ok !
public class C3 {
    C2 c2;  // C2 is public, ok !
    void test() {
        c2.publicMethod(); // C2 is public, use publicMethod of C1 !
    }
}

因此,减少class可见性对于不应直接在包外使用的abtract类有用。