[JAVA] 컬렉션 프레임워크, 제네릭, 애노테이션, 오버로딩 오버라이딩

JiKwang Jeong·2021년 11월 23일
0
post-custom-banner

컬렉션 프레임워크

  • Java Collection은 널리 알려져 있는 자료구조를 바탕으로 객체, 데이터들을 효율적으로 관리할 수 있는 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고한다.
  • List, Set은 Collection 인터페이스를 상속받지만, Map 인터페이스는 구조상의 차이라 별도로 정의한다.

제네릭

  • 제네릭은 자바의 타입 안정성을 맡고 있다. 컴파일 과정에서 타입체크를 해주는 기능으로 객체의 타입을 컴파일 시에 체크하기 때문에 객체 타입 안정성을 높이고 형변환의 번거로움을 줄여준다.

애노테이션

  • 애노테이션은 인터페이스를 기반으로한 문법으로 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다. built-in annotation은 상속받아서 메소드를 오버라이드 할 때 나타나는 @Override이 그 대표적인 예이다.
  • 메타 애노테이션은 애노테이션을 선언할 때 사용하는 애노테이션이다.
    - @Retention: 애노테이션 유지 범위를 지정한다. (소스, 클래스, 런타임)
    • @Inherit: 애노테이션을 하위 클래스까지 전달여부를 지정한다. 이 애노테이션이 있으면 하위 클래스까지 상속이 가능하다.
    • @Target: 해당 애노테이션을 어디에 사용할 지 결정한다. (타입, 필드, 메소드, 파라미터, 생성자, 로컬변수, 애노테이션 타입)

오버라이딩과 오버로딩의 차이

  • 오버라이딩: 상위 클래스의 메소드를 재정의하는 것을 의미한다. 또, 런타임 다형성이기도 한다.
  • 오버로딩: 같은 클래스 내에서 동일한 메소드 이름을 가지지만, 매개변수의 타입, 개수가 다르게 구현할 수 있는 것을 의미하며 컴파일 타임 다형성이기도한다. 따라서 오버라이딩 될 수 있다.
  • @Override를 써야하는 이유: 이 애노테이션은 컴파일 타임에 오버라이딩에 대한 안정성을 부여해주기 때문에 반드시 써주는 것이 좋다.
profile
기억보다 기록, 난리보다 정리
post-custom-banner

0개의 댓글