Java类可访问性

与我的另一个问题略有关系:以下几点有什么区别:

private class Joe
protected class Joe
public class Joe
class Joe

最后两点之间的差异再次是我最感兴趣的。


任何包装内的课程都可以访问公共课程。

具有默认访问权限的class Joeclass Joe )只对同一个包中的其他类可见。

私有和受保护的修饰符只能应用于内部类。

私有类只对其封闭类和其他内部类在同一个封闭类中可见。

受保护的类对同一包中的其他类以及扩展封闭类的类可见。


  • private:仅对外部类可见
  • 保护:仅对外部类可见
  • public:所有其他类都可见
  • class:package-private,对于同一个包中的类是可见的
  • 有关更多信息,请参阅JLS。


    具有默认访问权限的类在声明中没有前面的修饰符。

    默认访问是一个包级访问,因为具有默认访问权限的类只能被同一包中的类看到。

    如果某个类具有默认访问权限,则另一个包中的类将无法创建该类的实例,甚至不能声明变量或返回类型 。 编译器会抱怨。 例如:

    package humanity;
    class Person {}
    
    package family;
    import humanity.Person;
    class Child extends Person {}
    

    尝试编译这2个来源。 正如你所看到的,它们在不同的包中,编译将会失败。

    链接地址: http://www.djcxy.com/p/4111.html

    上一篇: Java Class Accessibility

    下一篇: Isn't "package private" member access synonymous with the default (no