Beny's Study

20. 접근제한자(AccessModifier ) 본문

[JAVA]/07. 객체지향

20. 접근제한자(AccessModifier )

76beny 2022. 4. 10. 21:53

 

접근제한자

클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수있다.

 

접근제한자의 종류

 

■ public int    publicValue; // 공용, 누구나 사용가능


protected int protectedValue;

//상속된 부모 자신간의 공유가능(패키지 달라고 상속되있으면 사용가능) + 패키지 같으면 사용가능==상속


int           defailtValue; //패키지 같을때만 사용가능(.아무 접근제한자도 없는것)


private int   privateValue; //자기 자신만 사용가능

제어자 같은클래스(다른X) 같은패키지(다른X) 다른패키지자손클래스 전체
Public O O O O
Protected O O O  
dafault O O    
private O      

 

 

 

접근제한자 예시

package com.kh.ex04.access_modifier;
public class AccessModifier {

public void myMethod() {//접근제한자 본인은 다 쓸수있다.
		publicValue	=1;//ok
		protectedValue	=2;//ok
		defailtValue	=3; //ok
		privateValue	=4;//ok
	}
}

 

Test_위와 같은 패키지 내에서 멤버변수 접근 

package com.kh.ex04.access_modifier;

public class TestAccessModifier {
	
	public static void main(String[] args) {
		AccessModifier test = new AccessModifier();
		
		test.publicValue	 =1;//ok
		test.protectedValue =2;//ok
		test.defailtValue	=3;//ok
		//test.privateValue =4;//오류,  자기 본인만 접근 가능하다
		//The field AccessModifier.privateValue is not visible오류
		//보이지않아! 접근불가능해!
		
	}

}

 

상속된 경우

package com.kh.ex04.access_modifier2;

import com.kh.ex04.access_modifier.AccessModifier;

//<상속>-나중에 더 자세히 배울것, 지금은 어떤식으로 흘러가는지만 파악
//extends : 상속키워드, AccessModifier를 상속한 자식을 생성
public class ExtendsTestAccessModifier extends AccessModifier {
//AccessModifier과의 관계 : 외부패키지에서 선언된 자식클래스
	
	
	//AccessModifier에서 가져옴
	public void myMethod() {//접근제한자 본인은 다 쓸수있다.
		publicValue		=1;//ok
		protectedValue	=2;//ok -> 상속된 자식에서 사용가능한 접근제한자라 가능!
		//defailtValue	=3; //NG -> 외부 패키지라 사용 불가능!(패키지가 달라서!)
		//privateValue	=4;//NG -> 자신만 사용 가능!
	}
	
	
	
	
}

 

 Test _외부에서 멤버변수 접근

 

package com.kh.ex04.access_modifier2;

import com.kh.ex04.access_modifier.AccessModifier;

public class TestAccessModifier2 {
	//AccessModifier와 다른패키지 = 외부에서  멤버변수 접근 테스트
	
	
	public static void main(String[] args) {
		AccessModifier test = new AccessModifier();
		
		test.publicValue	 =1;//ok// public은 어디서든 접근 가능하다!
//		test.protectedValue =2;//NG// 다른 패키지인데 상속이 안되서!
//		test.defailtValue	=3;//NG// 다른패키지라서
//		test.privateValue =4;// 자기 본인만 접근 가능하다
		//The field AccessModifier.privateValue is not visible오류
		//보이지않아! 접근불가능해!
		
	}

}

"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."

 

'[JAVA] > 07. 객체지향' 카테고리의 다른 글

22. 메소드 오버로딩  (0) 2022.04.10
21. 메소드 테스트  (0) 2022.04.10
19. Run  (0) 2022.04.10
18. 객체 설계도  (0) 2022.04.10
16. import문  (0) 2022.04.07