gpt4 book ai didi

java - 包范围类中的函数范围

转载 作者:行者123 更新时间:2023-11-29 04:24:07 25 4
gpt4 key购买 nike

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

class MyClass {
}

有什么区别

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

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

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

?

既然类是包作用域的,那么函数 publicprotected 会做什么或添加什么?

我对包范围类的推理:

  • 您不能从包外部使用该类,因为它是包范围内的,所以 public 没有额外的效果。
  • 按照同样的推理,protected 没有额外的效果,因为无论如何您都必须留在包裹内。
  • 因此,只有 private 与其他 3 个修饰符(packagepublicprotected)一样具有限制作用都是一样的。

这是正确的吗?

当类在包范围内时,我看不出修改之间的区别。

最佳答案

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

正如评论中所指出的,在继承循环中,间接子级虽然不是直接的,但可能会通过其他一些公共(public)类获得访问权限,因此在某些情况下它们会派上用场。

否则,您已经决定将整个类作为包保护,显然内部级别的可访问性无论如何都变得毫无意义。

简而言之,就可访问性而言,您选择了较高级别而不是较低级别。

关于java - 包范围类中的函数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com