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