如今存在三个类,三个包
如下
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方法的话,需要将这个类方法与父类同一个包下(前提是这个类与父类与子类毫无关系);