객체지향언어 (4) 접근제어자
1) 접근 제어자 (access modifier)
- 접근 제어자는 멤버 변수/함수 혹은 클래스에 사용되며 외부에서의 접근을 제한하는 역할을 합니다.
- private : 같은 클래스 내에서만 접근이 가능합니다
- default(nothing) : 같은 패키지 내에서만 접근이 가능합니다.
- protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능합니다.
- public : 접근 제한이 전혀 없습니다.
👉 위의 설명을 토대로 접근 범위에 대해 정리를 하면 다음과 같습니다.
(좁음) (넓음)
private → default → protected → public
2) 접근제어자 예제
- ModifierTest.java
package pkg;
public class ModifierTest {
private void messageInside() {
System.out.println("This is private modifier");
}
public void messageOutside() {
System.out.println("This is public modifier");
messageInside();
}
protected void messageProtected() {
System.out.println("This is protected modifier");
}
}
- Main.java
import pkg.ModifierTest; class Child extends ModifierTest { void callParentProtectedMember() { System.out.println("Call my parent's protected method"); super.messageProtected(); } } public class Main { public static void main(String[] args) { ModifierTest modifierTest = new ModifierTest(); modifierTest.messageOutside(); // modifierTest.messageInside(); // compile error // modifierTest.messageProtected(); // compile error Child child = new Child(); child.callParentProtectedMember(); } }
- access에 대한 컴파일 오류가 발생할 것입니다. 이처럼 접근 제어자를 통하여 접근할 수 있는 범위가 제한되곤 합니다.
👉 그렇다면 왜 접근 제어자를 사용하지?
- 객체지향 프로그래밍이란 객체들 간의 상호작용을 코드로 표현하는 것입니다.
- 이때 객체들간의 관계에 따라서 접근 할 수 있는 것과 아닌 것, 권한을 구분할 필요가 생깁니다.
- 클래스 내부에 선언된 데이터의 부적절한 사용으로부터 보호하기 위해서!
- 이런 것을 캡슐화(encapsulation)라고 합니다.
- 접근 제어자는 캡슐화가 가능할 수 있도록 돕는 도구입니다.
'웹 기술 쌈싸먹기 > Java' 카테고리의 다른 글
[JAVA] 객체지향 연습 (0) | 2022.01.19 |
---|---|
[JAVA] 객체지향언어 (5) 추상클래스, 인터페이스 (0) | 2022.01.19 |
[JAVA] 객체지향언어 (3) 상속 (0) | 2022.01.18 |
[JAVA] 객체지향언어 (1) 클래스, 인스턴스, 메소드 (2) 생성자 (0) | 2022.01.18 |
[JAVA] 이클립스(Eclipse) 기본 단축키 & 팁 (0) | 2022.01.14 |