Java中public,protected,default,private访问修饰符详解
首先来说private,对于这个访问修饰符,被private修饰的变量,方法,只能在本类中访问,在其它任何地方都无法访问,
通常在封装实体类(JavaBean)的时候,private这个访问修饰符被大量用到,用于封装自己的属性和方法不让外部访问。
default它并不是java中的一个访问修饰符,只不过我们习惯用default来表示缺省的情况,就是我们编写一个类的时候没有给它写任何的访问修饰符,这个时候它有一个默认的访问权限,当一个类没有被任何访问修饰符修饰的时候,这个类只能被同包中的类访问,变量缺省情况下(即没有访问修饰符),只能被当前类和同一个包中的其他类访问。
protected这个修饰符遇到的可能比private要少,但它很重要,被protected修饰的变量方法只能被当前类,同一个包中的类,不同包中的子类访问。比如说一个类A它里面有一个protected修饰的A()方法,他有两个子类B类和C类,两个子类B和C和他们的父类A不在同一个包,那么在两个子类中都可以通过他们自身的实例对象去访问父类中的A()方法,但是无法在B类中通过C类的实例对象去访问父类中的A方法,这里可能会有人有疑惑了,不是说子父类不同包的时候,可以在子类中访问父类的protected方法吗。是的确实是这样,当子父类不同包的时候,子类可以通过自身的实例对象访问父类的protected方法,但是要在自己本类当中才可以,不可以在其它子类中通过自身的实例对象去访问父类的protected方法,你只能在在本类中实例化自己去访问父类的protected方法。
而且在子类父类不同包的情况下,不能在子类中实例化父类的对象去访问父类的proctected方法。
对于public而言,就不需多说了最常见的就是他了,被他修饰的变量和方法在任何地方都可以访问到。