我有一个问题很疑惑,假设一个类没有设置为public,但是其中的成员变量或函数设置为public或protected,这是不是没有什么作用呢?它的成员变量和函数仍然无法在其它包中使用,对吗?
不是public 默认是default,这样确实是没法在其他包当中使用的,访问权限控制就是起这个作用的
答案很肯定
打个比方吧,一个人(类)不能进入中国馆(权限范围),他的腿(成员变量和函数)怎么能自己进去呢
类只能有public或默认访问级别。具有默认级别的类只能对位于同一个包中的类是可见的。如果将一个类声明为默认级别,其他包中的类要访问该类中的protected成员,可以通过继承实现。这样有利于提高安全性。一个默认类中声明public方法还是有作用的,比如我在一个包中定义两个类,一个默认类,一个public类,默认类被public类继承。那么默认类中的public方法也会被继承,虽然默认类不能被包外的类访问,但是其中的public方法可以通过public类来访问。(是不是有一点绕?)