GiYeong
Java - 2 본문
제네릭(Generic)
Java에서 제네릭이란 데이터의 타입을 일반화하는 것을 의미한다.
즉, 클래스나 메서드에서 사용할 내부의 데이터 타입을 컴파일 시에 미리 지정하는 방법이다.
이는 아래의 2가지 장점을 가진다.
1. 클래스나 메서드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다.
2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.
어노테이션(Annotation)
Java 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종으로 @ 기호를 앞에 붙여서 사용한다.
어노테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 JVM에 포함되어 작동한다.
어노테이션의 용도
1. 컴파일러에게 코드 작성 문법 에러 체크하도록 정보를 제공.
2. 소프트웨어 개발 툴이 빌드나 배치 시, 코드를 자동으로 생성할 수 있도록 정보를 제공.
3. 실행(런타임) 시, 특정 기능을 실행하도록 정보를 제공.
Overriding & Overloading
Overriding
상위 클래스의 메서드(부모 클래스로부터 상속받은 메서드)를 하위 클래스가 재정의 하는 것이다.
메서드의 이름, 파라미터의 개수와 타입, 반환 타입이 동일해야 한다.
Overriding 조건
1. 부모 클래스와 자식 클래스 사이에서만 성립된다.
2. static 메서드는 클래스에 속하는 메서드이기 때문에 상속되지 않으며, 따라서 Override되지 않는다.
3. private 접근 제어자를 가진 메서드는 상속되지 않으며, 따라서 Override 되지 않는다.
4. final이 지정된 메서드는 Override 할 수 없다.
5. interface를 구현하여 Override할 경우, 반드시 public 접근 제어자를 사용해야 한다.
6. 메서드 이름, 파라미터의 개수와 타입, 반환 타입이 동일해야 한다.
7. 부모 클래스 메서드의 접근 제한자 범위보다 작아질 수 없지만, 확장은 가능하다.
8. 부모 클래스 메서드보다 더 많은 예외를 던질 수 없다.
장점
1. 가독성이 좋아진다.
2. 메서드 하나로 여러 객체를 다루고, 객체마다 다른 기능을 사용할 수 있다.
Overloading
메서드의 이름은 같지만, 파라미터의 개수나 타입이 다른 메서드를 정의하는 것이다.
Overloading 조건
1. Overloading은 메서드 이름이 같아야 한다.
2. 파라미터의 개수 또는 타입이 달라야 한다.
3. 파라미터는 같고 반환 타입이 다른 경우는 Overloading이 성립되지 않는다.
장점
1. 가독성이 좋아진다.
2. 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있다.