在同一个包中,private修饰的变量和方法都只能在类中使用,这里的类是指这个定义的类中使用,而不是
指在别的类中声明这个类的对象引用能调用,而对于默认属性修饰的变量和方法能在同一个包中使用,也就是
说在同一个包中的别的类中声明这个类的对象引用,这个对象引用能访问默认属性的变量和方法,对于protected修饰的
变量和方法,允许同一个包的其他任何类以及它的任意位置的子类访问,这里得说明一点,如果你在这个子类中声明
父类的对象引用,这个对象引用并不能访问自己本身的protected修饰的变量和方法,其实很好理解,因为
protected修饰的变量和方法允许的是同一个包的其他任何类以及它的子类访问。没有说自己本身的对象引用能访问,
这很容易让人误解,自然,根据上面的规则,在不同包的类中声明一个类的对象引用,这个对象引用同样不能访问protected
修饰的变量和方法,初学者可能觉得我在任何地方声明自己的类的对象引用,自然能够引用本身所有的变量和方法,
其实不然,这跟你声明这个类的对象引用的位置有关,对于public修饰的变量和方法,所有的任意位置的类对象的引用
都能访问。
其实总结起来就是private修饰的数据成员只能在定义的类中访问,默认属性只能在同一个包中访问,protected修饰的
只能在同一个包中或者任意位置的子类访问(其实后半部分是因为protected修饰的能被子类继承,如果理解各个访问属性修饰的数据成员能否被继承的话,后半部分可以不看,因为后半部分
说的不太对,其实efault修饰的和protected修饰的数据成员的被访问属性是一样的。只是差别在被继承上。),public修饰的数据成员允许任意位置的类访问。不管你有无
声明这个类的对象引用,然后用这个类的引用去访问自己的数据成员,结果都一样,也就是说你声明的这个引用只能是指定
这个数据成员是属于哪个类,而不能涉及到访问权限。同时,这里得提一下,这里的引用的类型是跟声明它的类的类型
一致,而不是跟new的类的类型一致。因为引用类型和new的类型可能是不一样的,这里涉及到多态。这里的变量和方法包括静态的和非静态的。

同时这里要提一点,对于子类继承父类的数据成员,private修饰的是无法被继承,默认属性在同一个包中的子类能被继承,不同包中的子类能继承protectedpublic修饰的
成员和变量。