public,private,default,protected是java的四大修饰符,下面分别主要介绍四者之间的区别:
public是权限最大的修饰符,他可以修饰类,成员变量,成员方法,构造方法。被public修饰后,可以再任何一个类中,不管同不同包,任意使用。
private可以修饰成员变量,成员方法,构造方法,不能修饰类(此刻指的是外部类,内部类不加以考虑)。被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法向外界提供访问方式。?
protected可以修饰成员变量,成员方法,构造方法,但不能修饰类(此处指的是外部类,内部类不加以考虑)。被protected修饰后,只能被同包下的其他类访问。如果不同包下的类要访问被protected修饰的成员,这个类必须是其子类。?
同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 | |
pubulic(公共的) | √ | √ | √ | √ |
protected(受保护的) | √ | √ | √ | |
default(默认的) | √ | √ | ||
private(私有的) | √ |
?
从作用域来看,public能够使用所有的情况。但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?
?简单说,能用private就用private,不行就放大一级,用package(default),再不行就用protected,最后用public。这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了。