private,默认,protect,public 的可见范围是越来越大的.
都可以修饰域和方法.被修饰之后的域和方法,只能在对应的可见范围内使用.
在可见的范围内使用是什么意思呢?private 的可见范围就是类自己内部,对外不可见,只能在本类的内部使用.如被private 修饰的构造函数就不能在其他类的的范围内被调用,也就是不能在其他类中通过new 创建这种类对象.而例如public 修饰的方法,则可以在任意的类内通过该类对象实例来调用,因为public 修饰的对所有类都可见.而被private 修饰的域和方法都不能在其他类内通过该类的实例直接调用.
private 可见范围是类.只有同一种类的对象都可以存取.它是对类而不是对对象设限,所以Dog 可以看到别的Dog的私有部分,但Cat 就不能看到Dog的私有部分.参考《核心》P114,4.3.7 节
private 可以修饰域和方法,还有内部类.private 修饰的内部类是怎样的呢?
被private 修饰的内部类就相当于外部类的一个private 域.对外部是不可见的.
默认 就是没有修饰符,默认是对包可见.就是说其他包不能继承默认修饰符的类.
protected 包和子类可见.被修饰的域和方法,可以被不同包的子类继承.
public 任何地方都可见.