언어의 기초/자바(JAVA)
[JAVA] 익명 클래스
지에스정
2021. 11. 30. 15:37
익명 클래스(anonymous inner class)
이름이 없는 클래스
익명클래스는 앞에 있는 생성자의 클래스를 상속받고 있는 이름 없는 자식 클래스
일회용 클래스
그 앞에있는 생성자를 통해 만드는 객체 딱 하나만을 위한 클래스
그 때 만들어지는 객체는 익명 클래스 안에서 구현한 메소드의 내용을 가진다
이렇게 만들어지는 객체는 익명구현객체 라고 한다
package road;
public class Road {
public static void main(String[] args) {
Car myCar = new Car("Ferrari") {
@Override
void engineStart() {
System.out.println(brand + "터치로 시동켜기 ");
}
void f() {
System.out.println("새로운 메소드");
}
};
myCar.engineStart();
// ()myCar.f();
Car my = new Car("kia") {
@Override
void engineStart() {
System.out.println(brand + "터치로 시동켜기 ");
}
};
}
}
새로운 메소드를 구현하게 되면 자식에서 내용을 추가하는 것이나 마찬가지고
만들어지는 객체를 이 익명클래스 타입으로 다운캐스팅 해야만 사용 가능
하지만 익명클래스는 일회용으로 이름이 없기 때문에 다운캐스팅이 불가
따라서 새로운 메소드는 이 익명 내부에서만 사용 가능
예외 처리
에러 : 심각한 오류
예외 : 덜 심각한 오류
try ~ catch ~ finally
try{
예외가 발생할 수 있는 문장
}
catch(예외클래스 객체명){
예외 발생시 실행할 문장
}
finally{
예외 발생 여부에 상관없이 실행할 문자
}
Exception 클래스
모든 예외들의 부모클래스
throws
메소드 선언부 내부에서 발생하는 예외를 무시하고 호출하는 곳으로 떠넘기는 문법
호출하는 곳에서 예외가 발생할 수 있기 때문에 try~catch로 잡아준다
리턴타입 메소드명() throws 예외1, 예외2, .. {
예외1, 예외2, ... 무시하는 구역
}
매번 try catch로 묶기 귀찮을 때
예외처리를 다른곳에서 해줄 때