权限修饰符
权限修饰符
修饰符 | 类 | 包 | 子类 | 其他包 |
---|---|---|---|---|
public | ? | ? | ? | ? |
protected | ? | ? | ? | ? |
default | ? | ? | ? | ? |
private | ? | ? | ? | ? |
※权限范围由大到小:public > protected > default > private。
目录如下:
父类(Parent.java):
public class Parent {
// public 修饰符 name
public String name;
// protected 修饰符 age
protected int age;
// default 修饰符 sex
String sex;
// private 修饰符 money
private double money;
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
同包子类(Child1.java):
/**
* 结论: 本包 子类 获取不到 private 修饰的变量
* 子类具备父类 protected和public 修饰的变量
* @author 孟祥宽
*
*/
public class Child1 extends Parent{
public static void main(String[] args) {
Parent p = new Parent();
System.out.println(p.name);// public 修饰的变量
System.out.println(p.age);// protected 修饰的变量
System.out.println(p.sex);// default 修饰的变量
Child1 c = new Child1();
System.out.println(c.name);// public 修饰的变量
System.out.println(c.age);// protected 修饰的变量
}
}
同包非子类(Demo1.java):
package com.kaikeba.test;
/**
* 结论: 本包 获取不到 private 修饰的变量
*
* 本包的类可以获取到除private修饰的变量
*
* @author 孟祥宽
*
*/
public class Demo1 {
public static void main(String[] args) {
Parent p = new Parent();
System.out.println(p.name);// public 修饰的变量
System.out.println(p.age);// protected 修饰的变量
System.out.println(p.sex);// default 修饰的变量
}
}
不同包子类(Child2.java):
package com.kaikeba.test2;
import com.kaikeba.test.Parent;
/**
* 结论: 不同包 子类 能获取public 修饰的变量
* 子类具备父类 protected和public 修饰的变量
* @author 孟祥宽
*
*/
public class Child2 extends Parent{
public static void main(String[] args) {
// TODO Auto-generated method stub
Parent p = new Parent();
System.out.println(p.name);// public 修饰的变量
// System.out.println(p.age);// protected 修饰的变量
// System.out.println(p.sex);// default 修饰的变量
Child2 c = new Child2();
System.out.println(c.name);// public 修饰的变量
System.out.println(c.age);// protected 修饰的变量
}
}
不同包非子类(Demo1.java):
package com.kaikeba.test2;
import com.kaikeba.test.Parent;
/**
*
* 结论:不同包 不是子类 只能获取public修饰的变量
* @author 孟祥宽
*
*/
public class Demo1 {
public static void main(String[] args) {
Parent p = new Parent();
System.out.println(p.name);// public 修饰的变量
// System.out.println(p.age);// protected 修饰的变量
// System.out.println(p.sex);// default 修饰的变量
}
}