包括范围的类

时间:2017-11-17 08:23:55

标签: java

假设你有一个包为范围的类:

class MyClass {
}

之间有什么区别
class MyClass {
    public f() { ... }
}

class MyClass {
    protected f() { ... }
}

class MyClass {
    f() { ... }
}

由于该类是包作用域,因此使函数publicprotected执行或添加的内容是什么?

我对包范围类的推理:

  • 您不能在包外使用该类,因为它是包作用域,因此public没有其他影响。
  • 遵循相同的推理,protected没有额外的效果,因为你必须保留在包裹内。
  • 因此,只有private具有限制效果,因为其他3个修饰符(publicprotected)都是相同的。

这是对的吗?

当类是包作用域时,我没有看到修改之间的区别。

1 个答案:

答案 0 :(得分:3)

是。尽管public和protected在默认类中是多余的,但仍然私有对它们有一些意义。

正如评论中所指出的,在继承周期中,虽然不是直接的,间接的孩子可以通过其他公共课获得访问,因此它们在案件中派上用场。

否则,你已经决定将整个类作为包保护,显然内层级可访问性无论如何都没有意义。

简而言之,就可访问性而言,你选择了较高级别的较低级别。