包和接口(访问保护)

时间:2012-12-06 13:20:21

标签: java

同一个包中的非子类与不同包中的子类之间有什么区别?

2 个答案:

答案 0 :(得分:2)

给定一个班级A

  • A相同的包中的非子类可以访问A

  • 的公共和包私有方法
  • 其他包中的A子类可以访问A的公共和受保护方法。


注意:包私有保护没有关键字 - 当没有指定其他保护时,它是选择的保护。

public void thisIsPublic(...)

protected void thisIsProtected(...)

void thisIsPackagePrivate(...)

推荐阅读:Controlling Access to Members of a Class

答案 1 :(得分:2)

“同一个包中的非子类和不同包中的子类”,而不是问题是“当我们在不同包中的相同包和子类中声明非子类时会发生什么? 当您处理范围说明符时,这很重要。以下是显示差异的表格。

                       Private     No Modifier    Protected     Public

1. Same class           Yes             Yes         Yes          Yes

2. Same package         No              Yes         Yes          Yes
   subclass
3. Same package         No              Yes         Yes          Yes
   non-subclass
4. Different package    No              No          Yes          Yes
   subclass
5. Different package    No              No          No           Yes
   non-subclass

此表来自“Herbert Schildt”的“Java The Complete Reference”一书