Java 包作用域类中的函数作用域
假设您有一个包范围的类:Java 包作用域类中的函数作用域,java,Java,假设您有一个包范围的类: class MyClass { } 两者的区别是什么 class MyClass { public f() { ... } } 及 及 ? 既然类是包范围的,那么如何使函数公开或受保护执行或添加 我对包作用域类的推理: class MyClass { } 您不能从包外部使用该类,因为它是包作用域,因此public没有其他效果 按照同样的推理,protected没有额外的效果,因为您无论如何都必须留在包中 因此,只有private具有限制作用,因为其他3个
class MyClass {
}
两者的区别是什么
class MyClass {
public f() { ... }
}
及
及
?
既然类是包范围的,那么如何使函数公开
或受保护
执行或添加
我对包作用域类的推理:
class MyClass {
}
- 您不能从包外部使用该类,因为它是包作用域,因此
没有其他效果public
- 按照同样的推理,
没有额外的效果,因为您无论如何都必须留在包中protected
- 因此,只有
具有限制作用,因为其他3个修饰符(package、private
、public
)都是相同的protected
当类的作用域是包时,我看不到修改之间的区别。是。虽然public和protected在默认类中是冗余的,但是private对它们来说仍然有一定的意义 正如评论中指出的,在继承周期中,虽然不是直接的,但间接子类可以通过其他公共类访问,因此在某些情况下它们很方便 否则,您已经决定将整个类设置为包保护,显然内部级别的可访问性毫无意义
简而言之,就可访问性而言,您选择了上一级而不是下一级。可能重复@TrầnAnhNam我理解修饰符之间的区别,但不理解类在包范围内时的区别。您的类是包作用域,但其子类可能不是。如果一个类是包作用域,您如何从该类生成不在该包中的子类?如果一个公共类
a
在同一个包中扩展了您的MyClass
,如果另一个包中的类B
扩展了a
,B
可以访问MyClass
的公共受保护成员。感谢您的确认!
class MyClass {
f() { ... }
}