Beny's Study
20. 접근제한자(AccessModifier ) 본문
접근제한자
클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수있다.
접근제한자의 종류
■ 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 |