Java類成員訪問控制權限


類成員訪問控制權限

 

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, public
		this.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, public
		System.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, protected
		System.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();

	}

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM