标签:src str logs protect png sam height imp 子类
一、public
同一个package
1.本类内部
public class A { public int f=1; public void m1() {} public void m2() { f=2; //类内部正常访问 m1(); //类内部正常访问 } }
2.子类
package same; public class A { public int f=1; public void m1() {} }
package same; public class B extends A { public void m2() { f=2; //调用父类的public成员变量 m1(); //调用父类的public成员方法 } }
3.普通类
package same; public class A { public int f=1; public void m1() {} }
package same; public class B { public static void main(String[] args) { A a =new A(); a.f=2; //同一个包内 对类A的对像里面的public成员变量访问 a.m1(); //同一个包内 对类A的对像里面的public成员方法访问 } }
不同package之间
1.子类
package same; public class A { public int f=1; public void m1() {} }
package other; import same.A; public class B extends A { public void m2() { f=2; //对类A的的public成员变量访问 m1(); //对类A的的public成员方法访问 } }
2.普通类
package same; public class A { public int f=1; public void m1() {} }
package other; import same.A; public class B { public static void main(String[] args) { A a=new A(); a.f=2; //不同包之间 对类A的对像里面的public成员变量访问 a.m1(); //不同包之间 对类A的对像里面的public成员方法访问 } }
二、protected
同一个package
1.本类内部
package same; public class A { protected int f=1; protected void m1() {} public void m2() { f=2; //访问本类的protected成员变量 m1(); //访问本类的protected成员方法 } }
2.子类
package same; public class A { protected int f=1; protected void m1() {} }
package same; public class B extends A { public void m2() { f=2; //访问父类的protected成员变量 m1(); //访问父类的protected成员方法 } }
3.普通类
package same; public class A { protected int f=1; protected void m1() {} }
package same; public class B { public void m2() { A a=new A(); a.f=2; //访问A类对像的protected成员变量 a.m1(); //访问A类对像的protected成员方法 } }
不同package之间
1.子类
package same; public class A { protected int f=1; protected void m1() {} }
package other; import same.A; public class B extends A { public void m2() { f=2; //对类A的的protected成员变量访问 m1(); //对类A的的protected成员方法访问 } }
2.普通类
package same; public class A { protected int f=1; protected void m1() {} }
package other; import same.A; public class B { public void m2() { A a=new A(); //a.f=2; 无法对类A对像的protected成员变量访问 //a.m1(); 无法对类A对像的protected成员变量方法 } }
三、default
同一个package
1.本类内部
package same; public class A { int f=1; void m1() {} public void m2() { f=2; //访问本类的default成员变量 m1(); //访问本类的default成员方法 } }
2.子类
package same; public class A { int f=1; void m1() {} }
package same; public class B extends A { public void m2() { f=2; //访问A类对像的default成员变量 m1(); //访问A类对像的default成员方法 } }
3.普通类
package same; public class A { int f=1; void m1() {} }
package same; public class B { public void m2() { A a=new A(); a.f=2; //访问A类对像的default成员变量 a.m1(); //访问A类对像的default成员方法 } }
不同package之间
1.子类
package same; public class A { int f=1; void m1() {} }
package other; import same.A; public class B extends A { public void m2() { //f=2; 无法对类A的default成员变量访问 //m1(); 无法对类A的default成员变量方法 } }
2.普通类
package same; public class A { int f=1; void m1() {} }
package other; import same.A; public class B { public void m2() { A a=new A(); //a.f=2; 无法对类A对像的default成员变量访问 //a.m1(); 无法对类A对像的default成员变量方法 } }
四、private
同一个package
1.本类内部
package same; public class A { private int f=1; private void m1() {} public void m2() { f=2; //访问本类的private成员变量 m1(); //访问本类的private成员方法 } }
2.子类
package same; public class A { private int f=1; private void m1() {} }
package same; public class B extends A { public void m2() { //f=2; 无法访问A类的private成员变量 //m1(); 无法访问A类的private成员方法 } }
3.普通类
package same; public class A { private int f=1; private void m1() {} }
package same; public class B { public void m2() { A a =new A(); //a.f=2; 无法访问A类对像的private成员变量 //a.m1(); 无法访问A类对像的private成员方法 } }
不同package之间
1.子类
package same; public class A { private int f=1; private void m1() {} }
package other; import same.A; public class B extends A { public void m2() { //f=2; 无法对类A的private成员变量访问 //m1(); 无法对类A的private成员变量方法 } }
2.普通类
package same; public class A { private int f=1; private void m1() {} }
package other; import same.A; public class B { public void m2() { A a=new A(); //a.f=2; 无法对类A对像的private成员变量访问 //a.m1(); 无法对类A对像的private成员变量方法 } }
从实例角度分析java的public、protected、private和default访问权限
标签:src str logs protect png sam height imp 子类
原文地址:http://www.cnblogs.com/bateman6988/p/7674738.html