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

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