java中protected的再认识

package packageA;

public class ClassA {
	protected String s;
}

如今有另一个包里的类继承java

package packageB;

import packageA.ClassA;

public class ClassB extends ClassA {
	public void run(){
		System.out.println("run");
		ClassA a=new ClassA();
		System.out.println(a.s);
	}
}

结果会发现a.s会出错,缘由是无访问权限IDE建议改成publiccode

但是ClassB明明访问了ClassA啊(以前在ClassB中main方法访问出问题还觉得是static方法不能访问...)继承

可当把ClassB移动带ClassA相同的目录下时就能够操做a.s了class

protected其实也是同包能够访问(这点和default一致),另外还有个功能就是能够被之类继承,其实就是至关于之类也有一个protected String s;这一段代码,只是因为继承而省略了,这样能够减小代码量,那么其实之类是在访问本身的变量import

对于方法也是一样的道理,能够参见下面的代码:变量

package packageA;

public class ClassA {
	protected String s;
	public void print(){
		System.out.println(s);
	}
}

package packageB;

import packageA.ClassA;

public class ClassB extends ClassA {
	public static void main(String[] args){
		ClassB b=new ClassB();
		b.print();
		b.s="classB";
		b.print();
	}
}

结果为null和classB,其实至关于把class的相关代码拷贝到classB中权限

相关文章
相关标签/搜索