【问题标题】:Java Class Accessibility [duplicate]Java 类可访问性 [重复]
【发布时间】:2010-09-21 00:48:11
【问题描述】:

与我的other question略有关系:以下有什么区别:

private class Joe
protected class Joe
public class Joe
class Joe

再一次,最后两个之间的区别是我最感兴趣的。

【问题讨论】:

  • 我刚刚阅读了您的另一个问题。鉴于该问题的答案,这个问题是多余的。是的,它们是略有不同的问题 - 但给出的参考涵盖类可访问性以及变量。

标签: java class accessibility


【解决方案1】:

任何包中的类都可以访问公共类。

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

private 和 protected 修饰符只能应用于内部类。

私有类仅对其封闭类可见,并且同一封闭类中的其他内部类可见。

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

【讨论】:

    【解决方案2】:
    • private:仅对外部类可见
    • 受保护:仅对外部类可见
    • public:对所有其他类可见
    • 类:包私有,对同一包中的类可见

    请参阅JLS 了解更多信息。

    【讨论】:

    • 这是什么?!在没有解释的情况下投反对票?伙计们,这真的很糟糕!
    【解决方案3】:

    A class with default access 在声明中前面没有修饰符。

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

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

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

    尝试编译这 2 个源。如您所见,它们位于不同的包中,编译将失败。

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2023-03-17
      • 2013-04-11
      • 2013-04-05
      • 2013-07-12
      • 1970-01-01
      • 2018-03-07
      • 2021-01-16
      相关资源
      最近更新 更多