从实例角度分析java的publicprotectedprivate和default访问权限
Posted bateman6988
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从实例角度分析java的publicprotectedprivate和default访问权限相关的知识,希望对你有一定的参考价值。
一、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的publicprotectedprivate和default访问权限的主要内容,如果未能解决你的问题,请参考以下文章
publicprotected默认private修饰符修饰的区别
publicprotected默认private修饰符修饰的区别
Java访问修饰符:publicprotected缺省private