1、Java访问指示符: friendly,public,private,protected
Java访问指示符都置于数据成员和方法的最前面。
(1)、friendly:包中有效。
a、不指定访问指示符,默认就是friendly.
b、当前包内的其他所有类都能访问friendly 成员和方法,但对包外的所有类
来说,这些成员却是“私有”(Private)的,外界不得访问。
(2)、public:接口访问。
a、在public后面的成员声明适用于所有地方的类内部、方法内部访问此对象
方法。
b、默认包:处于同一个目录下的.class,没有定义package,这个目录就是这
些.class的一个默认包。
(3)、private:不能接触!
a、private关键字意味着除非那个特定的类,而且从那个类的方法里,否则没
有人能访问那个成员。
(4)、protected:包内+子类可以访问。
(5)、protected类型和友好类型的区别体现在继承中:若子类和父类在同一个包
中,子类会继承public、protected、友好类型的变量和方法;若子类和父类不在同
一个包中,子类只会继承public、protected类型的变量和方法,而不会继承友好类
型的成员变量和方法。
(6)、基类的私有类型可以继承到子类,但子类不可以访问父类的private成员,只
能通过父类原有的方法对该private方法函数进行使用。(其实这是废话)
2、类访问
(1)、每个编译单元(文件)都只能有一个public类。每个编译单元有一个公共
接口的概念是由那个公共类表达出来的。根据自己的需要,它可拥有任意多个提供
支撑的“友好”类。但若在一个编译单元里使用了多个public类,编译器就会向我
们提示一条出错消息。
(2)、public类的名字必须与包含了编译单元的那个文件的名字完全相符,甚至
包括它的大小写形式。
(3)、可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按自己的意愿任意指定文件名。
(4)、对于类的访问只有两个选择:“友好的”或者public。若不愿其他任何人
访问那个类,可将所有构建器设为private。这样一来,在类的一个static成员内
部,除自己之外的其他所有人都无法创建属于那个类的一个对象。也就是说,可以将
类的构造函数设置为private,这样,其他类就不可以直接创建该类的对象,但可以在
该类的内部设置静态函数,用于生成该类的对象,这样,其他类就可以通过该静态方法
生成该类的对象.