API-访问范围修饰符

目标

通过测试code展示访问范围修饰符的作用,并总结结果。

测试code

定义一个class,具有四种不同访问范围修饰符的field。

package com.chl.pone;

public class Father {
	private int privateValue;
	int friendlyInt ;
	protected int protectedValue;
	public int publicValue;
}

测试 :相同包,通过对象实例直接访问field。

package com.chl.pone;

public class ClassSamePackage {
	public void publicMethod(){
		Father father = new Father();
		father.friendlyInt = 1;
		father.protectedValue = 1;
		father.publicValue = 1;
	}	
}

测试:相同包,子类访问super field 。

package com.chl.pone;

public class ChildSamePackage extends Father{
	public void publicMethod(){
		this.friendlyInt = 1;
		this.protectedValue = 1;
		this.publicValue = 1;
	}
}

测试:不同包,子类访问super field。

package com.chl.ptwo;

import com.chl.pone.Father;

public class ChildNotSamePackage extends Father{
	public void publicMethod(){
		this.protectedValue = 1;
		this.publicValue = 1;
	}
}

测试:不同包,通过对象实例直接访问field。

package com.chl.ptwo;

import com.chl.pone.Father;

public class ClassNotSamePackage {
	public void publicMethod(){
		Father father = new Father();
		father.publicValue = 1;
	}
}

 结论

访问修饰符 本类内部 相同包(子类或其他类) 不同包子类 任何地方
private OK      
friendly OK OK    
protected OK OK OK  
public OK OK OK OK

 

 

 

你可能感兴趣的:(访问范围修饰符,JAVA,陈海龙的格物之路-JAVA篇)