본문 바로가기
언어의 기초/자바(JAVA)

[JAVA] 익명 클래스

by 지에스정 2021. 11. 30.

익명 클래스(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로 묶기 귀찮을 때

예외처리를 다른곳에서 해줄 때