좁은 접근 범위로의 메서드 오버라이딩.


만약 자바에서 좁은 접근 범위로의 메서드 오버라이딩을 허용한다면 어떤 문제가 발생할 수 있을까요?




클래스에서 일반 메서드를 선언하는 의도야 자기 맘이니 어쩔 수 없다고 해도, 인터페이스의 메서드의 같은 경우에는 문제가 발생할 수 있다.


인터페이스의 메서드는 기본적으로 public 권한을 갖는다. 즉 이를 구현한 클래스에 접근해 해당 메서드를 호출할 수 있다는 가정을 깔고 있는 것이다. 만약 이를 protected 나 private 권한으로 바꿔 버린다면, 인터페이스가 가지고 있던 약속을 어겨 버리는 것이 된다. 


컴파일은 어찌 어찌 된다고 하더라도, 런타임에 제대로된 동작을 할 수 없을 것이다.

+ Recent posts