如今存在三個類,三個包
如下
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方法的話,需要將這個類方法與父類同一個包下(前提是這個類與父類與子類毫無關係);