权限修饰符:
Java中有四种权限修饰符:
public > protected > (default) > private
注意:(default)并不是关键字“default”,而是根本不写。
能否访问该权限修饰符修饰的成员变量 | public | protected | (default) | private |
---|---|---|---|---|
同一个类(我自己) | √ | √ | √ | √ |
同一个包(我邻居) | √ | √ | √ | × |
不同包子类(我儿子) | √ | √ | × | × |
不同包非子类(陌生人) | √ | × | × | × |
同一个包:访问成员变量的成员方法和该成员变量在同一个类中
public class MyClass {
protected int num;
}
public class AnotherClass {
public/protected/private void anotherMethod(){
System.out.println(new MyClass().num);//注意这个的访问形式,不是直接写num,而是新建了一个匿名对象
}
}
不同包子类:是指两个类有继承关系在,但这两个类在不同的包里面,访问成员变量的成员方法和该成员变量分别在这两个类中
package 多态性;
public class MyClass {
public/protected/private int num;
}
package AnotherPack;
import 多态性.MyClass;
public class AnotherOne extends MyClass {
public void method(){
System.out.println(super.num);
}
}
不同包非子类:是指两个类既没有继承关系在,同时也在不同的包里面,访问成员变量的成员方法和该成员变量分别在这两个类中
public class MyClass {
public/protected/private int num;
}
public class Stranger {
public void method(){
System.out.println(new MyClass().num);
}
}