Java - 상속3

Jean·2025년 6월 23일
0

풀스택 교육

목록 보기
3/28

🧩 디폴트 메서드 (Default Method)

📌 왜 필요하지?

  • 기존 인터페이스는 모든 메서드를 반드시 오버라이딩해야 한다
    • 예: Filter 인터페이스에 메서드가 3개 있으면, 실제로 1개만 필요해도 3개 전부 구현해야 함 → 낭비
  • 디폴트 메서드는 선택적 오버라이딩이 가능 → 인터페이스에 유연성 부여

✅ 특징

  • default 키워드
  • 인터페이스 내에서도 메서드 구현부 작성 가능
  • 기본 구현 제공 → 필요 시 오버라이딩 가능
  • 기존 인터페이스에 기능을 추가할 때 하위 호환성 유지
interface Filter {
    default void init() {
        System.out.println("기본 초기화");
    }

    void process();
}

⚠️ 주의!

  • "기존 메서드 추가"와 뭐가 다르냐? → 인터페이스는 원래 구현 불가, 디폴트는 예외
  • 너무 사용하면 클래스 간 충돌 발생 가능성 UP

🛠 예외 처리 (Exception Handling)

📌 오류 종류

구분설명
컴파일 오류코드 작성 중 발생하는 문법 오류 (;, {}, 타입 등)
실행 오류프로그램 실행 중 발생, 예외(Exception) 또는 에러(Error)

⚠️ 예외 vs 에러

구분설명
에러 (Error)JVM 내부에서 발생하는 치명적인 문제. 예외 처리 불가. 대부분 프로그램 종료
예외 (Exception)자바 코드에서 발생하는 오류. 개발자가 처리 가능

🎯 예외의 두 가지 유형

유형설명예외 처리 여부
일반 예외 (Checked)컴파일러가 예외 처리 강제 요구반드시 처리 (try-catch 또는 throws)
런타임 예외 (Unchecked)실행 중 발생, 컴파일러 확인 X처리 선택적

🧪 try-catch-finally 구조

try {
    // 예외 발생 가능 코드
} catch (예외클래스 변수명) {
    // 예외 처리 코드
} catch (다른 예외클래스 변수명) {
    // 다른 예외 처리
} finally {
    // 예외 발생과 관계없이 무조건 실행
}
  • catch 블럭은 여러 개 작성 가능 (위에서 아래 순서로 검사)
  • finally는 생략 가능

✅ 예시

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("0으로 나눌 수 없습니다.");
} finally {
    System.out.println("예외 발생 여부와 관계없이 실행됩니다.");
}

profile
햇내기 개발자 지망생

0개의 댓글