权限修饰符


权限修饰符

修饰符 子类 其他包
public ? ? ? ?
protected ? ? ? ?
default ? ? ? ?
private ? ? ? ?

权限范围由大到小:public > protected > default > private。

目录如下:

image-20211116155548170

父类(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 修饰的变量
	}
}