public,private,protected都是java的权限访问修饰符,在使用时都是置于类中成员(域和方法)的定义之前。在介绍这三个访问权限修饰符之前先介绍一下默认访问权限。默认访问权限没有任何关键字。类和类中的成员不加任何访问权限修饰符就是默认访问权限,默认访问权限通常是包访问权限。如果一个类是默认访问权限,那么只有和这个类在同一个包中的类才有权限访问这个类(也就才能创建这个类)。如果类中的成员是默认访问权限,那么这就意味着在同一个包中的其它类对该类的成员都有访问权限,而对包外的其他所有类,这个字段是private的。类控制着那些代码有访问自己成员的权限,其它类不能一上来就说:“我是你的朋友”,并且还想看到你的protected,private和默认的访问权限修饰的成员。取得对成员的访问权限唯一的途径就是:
1,使该成员为public,于是,无论是谁,无论在哪里,都可以访问该成员。
2,通过不加任何访问修饰符将类放置于同一个包内的方式,赋予成员包的访问权限。于是包的其它类都可以访问其中的成员。
3,一个类(父类)继承另一个类(子类),那么子类可以访问父类的protected成员和public成员,但是不可以访问private成员。
4,提供get/set方法来提取和改变值。
public(公共的访问权限)
使用关键在public就意味着public后紧跟着的成员声明自己对每个人都都是可用的。
package com.zxy.www.A;
public class A1 {
String strA1="my name is A1.";//添加public访问修饰符
}
package com.zxy.www.B;
import com.zxy.www.A.A1;
public class B1 {
static A1 a1 = new A1();
public static void main(String[] args) {
String str= a1.strA1;
}
}
以上两个类中B1中的String str= a1.strA1;编译时会包错,因为A1类中的字段strA1是包访问权限(默认访问权限),B1类和A1不在同一个包中,所以B1不具有访问A1中strA1字段的权限,也就是B1对A1中的strA1不具有包访问权限。如果B1,A1在同一个包中就不会有错,或strA1是public。
private(你无法访问的权限)
关键在private的意思是,只有包含该成员的类才有权访问它。也就是说这个private成员只能在类中使用。任何其它类都无法访问它。
protected(继承访问权限)
如果A包中的类(父类)被B包中的类(子类)继承,那么子类只能访问父类的public和protected成员(当然两类在同一包内执行继承工作,就可以操纵拥有包的访问权限)。protected的作用是父类中的某些特定成员只想让让子类使用。当然protected也提供包访问权限,也就是说即使两个类不存在继承关系,但是在同一个包中是可以访问protected成员的。