익명객체 : 이름이 없는 객체
자식클래스나 구현클래스를 만들지 않고 객체 생성 가능
클래스를 상속하거나 인터페이스를 구현해야만 생성 가능
익명 자식 객체 - 클래스를 상속
new 부모클래스() {
필드
메소드
}
익명 구현 객체 - 인터페이스를 구현
new 인터페이스() {
필드
메소드
}
Tire tire = new Tire() {
@Override
public void roll() {
sysout("익명자식객체");
}
}
RemoteControl rc = RemoteControl() {
@Override
public void turnOn() {
sysout("익명구현객체");
}
}
라이브러리 : 클래스와 인터페이스를 모아둔 것
JAR압축파일 형태로 존재
모듈
java9부터 지원
패키지 관리 기능이 추가된 라이브러리
예외처리
컴퓨터 하드웨어 관련 고장으로 응용프로그램 실행 오류 발생 -> 에러
그 외 프로그램 자체에서 발생하는 오류 -> 예외
예외처리 코드
: 예외 발생 시 종료되는걸 막고 정상 실행을 유지하도록 처리하는 코드
일반 예외 - 컴파일러 예외 체크 (예외처리코드검사 실행)
실행 예외 - 컴파일러 예외 체크를 안함 ---> 개발자의 경험으로 예외처리코드 작성 필요
try { 예외가 발생될 코드 }
catch(예외클래스 e) { 예외 처리 } ---> 예외클래스 : 발생되는 예외타입
finally { 예외 발생 유무에 상관없이 마지막에 항상 실행 }
예외 정보 출력 3가지
e.getMessage() : 예외 발생 이유 리턴
e.toString() : 예외 발생 이유와 예외 종류 리턴
e.printStackTrace() : 예외 발생 이유와 예외 종류, 예외 발생 위치까지 리턴
일반 예외
ClassNotFoundException
InterruptedException
실행예외
NullPointerException
ArrayIndexOutOfBoundsException
NumberFormatException
상위 및 하위 클래스, 구현 클래스와 인터페이스 간 타입 변환 가능
이러한 관계가 아닐 경우 ClassCastException 발생
예외 떠넘기기
호출한 곳에서 예외 처리 가능
throws 키워드 뒤에 떠넘길 예외 클래스를 나열
public void method() throws 예외클래스(여러개도지정가능) {
예외발생코드
}
사용자 정의 예외
일반 예외는 Exception을 상속
실행 예외는 RuntimeException을 상속
(새로운 예외 생성 후 Exception 상속 받는게 필요함)
예외 발생시키기
throw 키워드 + 예외 객체 제공
throw new Exception() // 일반 예외 발생
throw new RuntimeException() // 실행 예외 발생
throw new 사용자예외클래스("예외메시지")