Java类成员访问控制权限

来源:互联网 发布:青岛seo公司排行 编辑:程序博客网 时间:2024/05/14 10:32
类成员访问控制权限

 

JAVA中有四种访问控制权限,分别为:private, default, protected, public

 

1、Private

如果一个成员方法或变量名前使用了private, 那么这个成员只能在类的内部使用。

 

2、Default

如果一个成员方法或变量名前没有使用任何访问控制符,就为default。默认的访问控制成员可以被这个包中的其它类访问(包括这个包中的子类内部以及这个包中所有类以对象.成员的方式访问)。如果这个子类不在这个包中,则子类也不能访问父类的默认访问控制成员

 

3、Protected

这个成员既可以被这个包中其它类访问,也可以被不同包中的子类内部访问

 

4、Public

可以被所有类访问,不管访问类与被访问类在不在同一个包中

 

 

总结

 

Private

Default

Protected

public

只用本类内部可访问

同一包中的类(包括子类,以及以对象.成员)

 

其它包中的子类内部

 

 

其它包中的类(对象.成员, 不是子类)

 

 

 

 

 

以下是示例代码:

 

1、包myjava.learn.package1:

 

Person.java

package myjava.learn.package1;public class Person {private int a_pri = 10; // private只能在本类被访问, 子类也不能访问int a_defaut = 11;protected int a_prot = 12;public int a_pub = 13;}

  

PersonPackage1.java

package myjava.learn.package1;public class PersonPackage1 extends Person{void fun(){// 以下当然可以被访问,因为在同一个包中的类可以访问default, protected, publicthis.a_defaut = 12;this.a_prot = 13;this.a_pub = 14;System.out.println( this.a_defaut );}}

  

Main.java

package myjava.learn.package1;public class Main {public static void main( String args [] ){PersonPackage1 pp = new PersonPackage1();pp.fun();// 同一包中的类可以以[对象.成员]访问default, protected, publicSystem.out.println( pp.a_defaut );System.out.println( pp.a_prot );System.out.println( pp.a_pub );}}

  

2、包myjava.learn.package2:

Main.java

package myjava.learn.package2;import myjava.learn.package1.PersonPackage1;import myjava.learn.package1.Person;// 其它包中的子类class PersonPackage2 extends Person{void PrintAttr(){// 不同包的子类只能访问父类的public, protectedSystem.out.println(this.a_prot);System.out.println(this.a_pub );}}public class Main {public static void main(String[] args) {// TODO Auto-generated method stub// 其它包中的类(对象.成员, 不是子类),只能访问public成员PersonPackage1 pp = new PersonPackage1();System.out.println(pp.a_pub);PersonPackage2 pp2 = new PersonPackage2();pp2.PrintAttr();}}

  

 

0 0