熟悉java的应该都知道java的4种访问控制符:public , protected, default(friendly), private。今天我也来总结下这4种访问控制符。可以通过以下这张表来记忆
修饰符 | 当前类 | 同一包内 | 子孙类 | 其他包 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
暂且这样记:public(公共访问),protected(子类访问),default(包访问),private(类内部访问)。详细解释如下:
-
public :可以修饰:类、接口、变量、方法。被修饰的在所有类可以访问的到。
public class TestPublic {//public修饰类 public int a;//public修饰变量 public String str; public static void main(String[] args){//public修饰方法 } }
public interface TestPublicItf {//public修饰接口 }
-
protected :可以修饰:变量、方法、内部类。 被修饰的在同一包内的类和所有子类可以访问的到。注意:不能修饰外部类。
public class TestProtected { protected int a;//protected修饰变量 protected void prt(){//protected修饰方法 } protected class inner{//protected修饰内部类 } }
protected class Test01{//这样是不对的,没有这种写法 }
-
default (即缺省,什么也不写): 可以修饰:类、接口、变量、方法。被修饰的在同一包内可以访问的到,不使用任何修饰符。
interface TestDefaultItf {//default修饰接口 } //编译后的代码是: //abstract interface TestDefaultItf{}
public class TestDefault { int a;//default修饰变量 void testDf(){//default修饰方法 } } class Demo{//default修饰类 }
-
private :可以修饰:变量、方法、内部类。 被修饰的在同一类内可以访问的到。注意:不能修饰外部类
public class TestPrivate { private int a;//private修饰变量 private void Pri(){//private修饰方法 } private class inner{//private修饰内部类 } }