java中跨包繼承、實例化調用方法、屬性、字段的權限

如今存在三個類,三個包
如下
amercan包
people.java

package amercan;

public class people {
	protected int a;
	private int b;
	public int c;
	
	protected people()
	{
		a = 1;
		b = 2;
		c = 3;
	}

	protected int getA() {
		return a;
	}

	protected void setA(int a) {
		this.a = a;
	}

	public int getB() {
		return b;
	}

	public void setB(int b) {
		this.b = b;
	}

	private int getC() {
		return c;
	}

	private void setC(int c) {
		this.c = c;
	}
	
}

包 england
father.java

package england;

import amercan.people;

public class father extends people
{
	public father()
	{
		super();
	}
	
}

包japan
text.java

package japan;

import england.father;

public class text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		father f = new father();
		f.c = 12;
		f.getB();
	}

}

測試1:在people類與,father類中,father繼承了people類的protected與public方法,因此,在father類中只能調用父類的protected與public方法,也就是被繼承的,由此可見,default和private的方法和屬性是不能被繼承的,也就不能被調用。
在這裏插入圖片描述
測試2:在text中實例father的一個對象,可以得到,只能調用到father繼承的public方法與字段
在這裏插入圖片描述
測試三:將類text與類people放在同一個包下,可以調用類people的protected與public的方法
在這裏插入圖片描述
測試結果
1.在java中,如果要跨包進行繼承,必須要引入類所在的包名;
2.由於,在定義屬性或者字段的是時候,如果不指明屬性或字段的權限的話,默認爲 Default,而Default的訪問權限僅限於在同一個包中進行訪問;
3.關於跨包繼承,父類的構造函數不能是private或default,需要修改成,protected或者public,否則無法繼承(無法使用super顯示調用父類的構造函數);
4.跨包過程中,如果在主類(並不一定是主類,任何一個與實例的子類或者父類無關係的類)中需要使用某一個類的父類的函數或者字段屬性等,只能使用這個父類的public方法或者屬性等;
5.如果要通過一個實例化子類的來使用父類的protected方法的話,需要將這個類方法與父類同一個包下(前提是這個類與父類與子類毫無關係);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章