[java] 상위 클래스와 하위 클래스의 멤버 접근 제한
자바에서는 클래스의 멤버(필드, 메서드)에 대한 접근 제한자를 사용하여 외부에서의 접근을 제어할 수 있습니다. 이러한 접근 제한자를 통해 상위 클래스와 하위 클래스 간의 멤버 접근에 대한 규칙을 이해할 수 있습니다.
멤버 접근 제한자
자바에서는 다음과 같은 네 가지의 멤버 접근 제한자를 제공합니다.
- public: 모든 클래스에서 접근 가능
- protected: 동일 패키지 내의 클래스 및 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근 가능
- default(package-private): 동일 패키지 내의 클래스에서만 접근 가능, 접근 제한자를 명시하지 않은 경우 기본적으로 적용됨
- private: 동일 클래스 내에서만 접근 가능
상속 관계에서의 멤버 접근
상속 관계에서는 상위 클래스의 멤버를 하위 클래스에서 상속받아 사용할 수 있습니다. 이때, 각 멤버의 접근 제한자에 따라 다음과 같은 규칙이 적용됩니다.
- public: 상위 클래스의 public 멤버는 하위 클래스에서 접근 가능
- protected: 상위 클래스의 protected 멤버는 하위 클래스에서 접근 가능
- default(package-private): 상위 클래스의 default 멤버는 동일 패키지 내에서만 접근 가능
- private: 상위 클래스의 private 멤버는 하위 클래스에서 접근 불가능
이를 통해, 상속 관계에서 각 멤버의 접근 제한자에 따라 상위 클래스의 멤버를 안전하게 활용할 수 있습니다.
예시
public class Superclass {
public int publicField;
protected int protectedField;
int defaultField;
private int privateField;
}
public class Subclass extends Superclass {
// 상위 클래스의 public, protected 필드에 접근 가능
public void accessFields() {
publicField = 10;
protectedField = 10;
// defaultField에는 접근 불가능
// privateField에는 접근 불가능
}
}
결론
자바에서는 상속 관계에서 상위 클래스의 멤버에 대한 접근 제한을 효과적으로 관리할 수 있습니다. 각 멤버의 접근 제한자를 적절히 활용하여 클래스 간의 관계를 명확히 정의하고, 안전하게 멤버를 활용할 수 있습니다.
참고 문헌: Oracle Java Documentation