1. 인터페이스
public class 클래스명 implements 인터페이스명 {
@Override
public 리턴타입 메서드이름(매개변수, ...) {
}
}
- 반드시 오버라이딩 되어야한다.
- 추상과의 비교
- 추상 : 코딩중 또는 코딩 후 - 이러이러한 기능의 메서드들이 공통으로 쓰이네? 모으자 (후처리 성격)
- 인터페이스 : 코딩전 - 이러이러한 기능의 메서드들을 공통적으로 쓸거야! 설계를 미리하자 (전처리 성격)
2. 예외처리
A. 오류 vs 예외
- 오류 : 회복이 불가능
- 예외 : 회복이 가능 - 미리 예상하고 대처가 가능하다는 전제.
- 코드 실행 관점에서의 예외
- 컴파일 에러 : Java 문법을 지키지 않았을 때
- 런타임 에러 : 프로그램 실행도중 맞닥뜨리는 문제
- 예외처리 관점에서의 예외
- checked Exception : 미리 예상하고 대처하여, 컴파일 시점에서 제대로 대처했는지 확인할 수 있는 예외
- unchecked Exception : 예상하지못해, 런타임 시점에서 확인되는 예외
B. 명령어
- throws : 메서드 선언 끝에 연장하여 사용. '에러 있을수 있어!'라는 경고의 의미
- throw : 메서드 내부에서 사용. 실제로 에러가 났을때 예외를 던짐.
- try ~ catch ~ finally
- try : 예상가능한 오류가 포함되어있는 메서드(throws의 대상) 내부에서 쓰는 예외처리 시작명령어
- catch : 오류가 발생했을때, 해당 라인 코드내용을 실행
- finally : catch가 실행되면 그 아래에 있는 코드들은 스킵되는데, finally를 써서 반드시 실행되어야하는 코드를 실행시킬 수 있음
3. 제네릭
A. 효용
- 중복되거나 필요없는 코드를 줄여주는 것
- 타입 안정성 보장
B. 문법
public class Generic<T> {
private T t;
public T get() {
return this.t;
}
public void set(T t) {
this.t = t;
}
public static void main(String[] args) {
Generic<String> stringGeneric = new Generic<>();
stringGeneric.set("Hello World");
String tValueTurnOutWithString = stringGeneric.get();
System.out.println(tValueTurnOutWithString);
}
}
- 제한 : static 멤버에 사용불가, 제네릭 배열은 X