一、成员的访问权限
在java实现过程中,对成员(成员变量和成员方法)的访问控制可以保护不想被修改的代码,也可以控制成员的访问权限。成员的访问权限有public,protected,private和包访问权限四种,每个访问权限修饰词仅控制它所修饰的特定定义的访问权限。
(1) public关键字修饰的成员,可以在任何地方被访问到该成员变量(前提是可以获得其所在类的对象)
(2)成员变量前不加访问权限修饰词是只可以被位于同一包内的类访问到(包访问权限);
(3)被public和protected关键字修饰的成员,可以被其子类访问到;
(4)被protected修饰的成员也具有包访问权限;
关键字
当前类
同一包内
子类
其他package
Public
√
√
√
√
Private
√
×
×
×
Protected
√
√
√
×
Default
√
√
×
×
1.包访问权限
如果对成员不提供任何访问权限修饰词(默认访问权限),则意味着是“包访问权限”。包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以相互访问。若父类和子类在同一包内,则子类对父类的默认成员变量或方法有访问权限;若子类与父类不在同一包内,则没有访问权限。
2.public:接口访问权限
声明为public的成员,只要可以获取其所属的对象,那么就可以访问该public关键字修饰的成员。
3.private:你无法访问
声明为private的成员只可以在同类内被访问到,其他类则不可以访问该成员。
4.protected:继承访问权限
声明为protected的成员会把它的访问权限赋予派生类而不是所有类。另外,被protected修饰的成员也具有包访问权限。
二、类的权限控制
和前面一样,如果没有为类明确指定一个访问修饰符,就会默认得到包访问权限。即意味着该类的对象可以由包内任何其他类来创建,但在包外是不行的。
被public关键字修饰的类可以在任何地方创建其对象。
只有一个内部类可以是private或者protected,这个会在后面看了内部类之后再进一步解释。