java相对于c++多了一个同包权限,于是就可能会问这个同包权限与保护权限相比,哪个范围更大?类的访问控制体现了封装的思想。如果画四个依次包含的圆来表示拥有某一权限的类成员的可访问范围,最外面的圆一定是公有权限(public),由外及里,依次为同包权限(default),保护权限(protected),私有权限(private)。
1.公有权限(public)
顾名思义,完全开放的,这样的类成员谁都能访问到。
2.保护权限(protected)
可以在类的内部访问;子类通过继承父类,也可以访问到父类的保护成员。
那么,在子类里能不能访问父类的对象的保护成员呢?不能的。可见这种保护成员的访问不能在不同的类的对象之间开放。
3.同包权限(default)
一个类的成员如果不使用访问权限关键字修饰,就是同包(default)权限的。
可以在类的内部访问;或者位于同一个包名内的其他类也能访问。两个类位于同一个包内,就叫做同包,它们不仅可以访问彼此的同包成员,也可以访问彼此的具有保护权限的成员。
那么,同包权限的类成员能被继承吗?这里要分为两种情况:子类与父类同包的,可以继承;子类与父类不同包,不能继承。
4.私有权限(private)
不用讲了吧,拥有的访问范围最小,只能在类的内部访问。