
Java를 공부하던 중, 왜 메서드(Method)에 제어자 static과 abstract를 함께 사용할 수 없는지에 대해 의문이 생겼다. 이 이유를 서술하기 전에, 먼저 알아야 할 개념들을 살펴보고, 그 이후에 왜 함께 사용할 수 없는지를 설명할 것이다. 1. sta

1. 오버라이딩시 메서드의 접근 제어자 변경 제한 부모클래스로부터 상속받은 메서드의 오버라이딩 (overriding) 시 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 라는 제한이 있다. 예를 들면 부모 클래스에 정의된 메서드의 접근 제어자가

1. 오버라이딩시 메서드의 접근 제어자 변경 제한 부모클래스로부터 상속받은 메서드의 오버라이딩 (overriding) 시 조상 클래스의 메서드보다 더 넓은 범위의 예외 선언을 할 수 없다. 라는 제한이 있다. 예를 들면 조상클래스의 메서드에 선언된 예외가 IOExce

1. 지네릭스의 제한 모든 객체에 대해 동일하게 동작해야하는 static 멤버에 타입 변수 T를 사용할 수 없다. 왜냐하면 T는 인스턴스 변수로 간주되기 때문이다. 즉 다음과 같은 코드는 에러가 발생한다. ✍️ 작성 해당 포스팅에서 알아보았듯 static 멤버는 인스턴스와는 독립적으로 클래스 자체에 속하므로 특정 인스턴스에 종속되지 않는다. 반대로 ...

디폴트 메서드 (Default Method)란 인터페이스 내부에서 추상 메서드의 기본적인 구현을 제공하는 메서드로 인터페이스에 새로운 메서드를 추가할 때 생기는 고충을 해결하기 위해 고안된 개념이다. 기존의 경우 인터페이스에 새로운 메서드를 추가한다는 것은 추상메서드

1. 내부 클래스의 제어자와 접근성 내부 클래스를 공부하던중 관련 내용이 살짝 헷갈릴 수 있어 여기에 정리하였다. 해당 그림과 예전 글을 참고하면 본문 내용을 확실히 이해할 수 있다. 기본적으로 static 내부 클래스와 인스턴스 내부 클래스는 결국 각각 static

1. 재귀적 타입 한정 (Recursive Type Bound)이란 재귀적 타입 한정(Recursive Type Bound)은 제네릭 타입을 정의할 때 사용하는 기법 중 하나로 제네릭 타입이 자기 자신을 타입 매개변수로 사용할 수 있게 하는 방식이다. 예를 들면 다

공변성 (Convariance)은 한 타입이 다른 타입의 서브타입인 경우, 그 서브타입이 포함된 복합 타입도 상위 타입의 복합 타입의 서브타입이 되는 성질을 말한다. 쉽게 말해, A가 B의 상위 타입일 때, C<A>도 C<B>의 상위 타입이 되는 것을 의미한