一、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成员变量方法 }}