Java权限修饰符有public,protected,private,下面就来熟悉一下他们的作用范围。
类内部 同一包 子类 任何地方
private Yes
default Yes Yes
protected Yes Yes Yes
public Yes Yes Yes Yes
对于类的修饰符只能用public和default
default类只可以被同一个包内部的类访问。
注意被protected修饰的属性在同一个包内的,在子类中可以被访问,但是不在一个包内的,即无法被访问。
代码说明上面的protected的用法:
package com.jack.dao;
class B extends Test{
public static void main(String[] args) {
Test t = new Test();
//此时在子类中父类的对象可以访问其protected属性
System.out.println(t.a);
B b = new B();
System.out.println(b.a);
}
}
public class Test{
protected int a = 1;
int b = 2;
int get(){
return 1;
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.a);
}
}
package com.jack.test;
import com.jack.dao.Test;
class Test1 extends Test{
public static void main(String[] args) {
Test1 t1 = new Test1();
Test t = new Test();
System.out.println(t1.a);
//下面这条语句是错误的,此时父类中的对象无法访问其中的protected属性,因为已经不在一个包里面了
System.out.println(t.a);
}
}