Closed ssstopeun closed 1 year ago
저는 하위 클래스의 네임스페이스가 인터페이스에서 정의한 상수의 영향을 받는다
라고 이해했습니다.
예를 들면 아래와 같이 상수를 선언한 인터페이스 InterfaceConstants
와 이를 구현한 MyClass
가 있을 때,
public interface InterfaceConstants {
String NAME = "현상혁";
int AGE = 26;
}
public class MyClass implements InterfaceConstants {
public void someMethod() {
}
}
아래와 같이 MyClass
엔 아무런 변수/상수를 선언하지 않았음에도 인터페이스에서 선언한 상수를 사용할 수 있게
됩니다. 또한 MyClass
가 final이 아니므로, 이 클래스를 상속받는 다른 클래스에도 이런 식으로 사용이 가능할 것입니다. 저는 이러한 상황이 이름공간(네임스페이스)가 '오염' 되는 상황이라고 이해했습니다.
아마 책에서는 이런 식으로 상위 인터페이스에서 선언한 상수가 계속해서 하위 클래스에서 접근 가능한 상황이 불필요하고 오류 가능성을 주기때문에 해당 설명을 넣은게 아닐까 생각됩니다.
p. 140 에
는 부분의 의미가
public class PysicalTest implements PhysicalConstants
와 같이 implements 뒷 부분이 인터페이스의 이름으로 오염된다는 뜻일까요? 책의 내용은 인터페이스가 정의한 상수들로 오염된다고 하는 부분을 어떻게 이해하셨나요...?