클래스명이 없는 클래스를 객체 생성과 함께 정의 하는 클래스이다.

형태

일반 클래스와 추상 클래스를 이용한 익명 클래스는 상속의 개념과 동일하다.

내부에서 타입에 정의된 함수를 재정의 할 수 있다.

일반 클래스를 익명 클래스로 만드는 가장 큰 목적은 함수 재정의 와 같은 내부 변경이 필요해서이다.

타입 변수명 = new 타입(){

오버라이드 된 메서드를 재정의

           }
Animal a = new A(){
  // 클래스 내부 구간
   @Override
	   public void method(){ 
  System.out.println(
"method1()함수 재정의");
    }
}

기본 예제

추상클래스

package inner03_annoymous;
//추상클래스
public abstract class Action {
	
	public abstract void exec();

}

구현클래스

package inner03_annoymous;

public class ActionExam {

	public static void main(String[] args) {
		// 객체 생성
		//1.구현 클래스를 통한 객체생성
		//추상               구현
		Action action=new MyAction();
		action.exec();
		
		
		//2.익명 클래스 : 클래스 이름이 없다.
		//일반클래스 (클래스 선언---> 객체 생성)
		//익명클래스 (추상클래스를 구현하는 구현 클래스가 없다)
		//형태 :타입 변수명 =new 타입() {    }
		
		Action annoy = new Action() {

			@Override
			public void exec() {
				System.out.println("익명클래스는 1회용 클래스다 .그래서 이름이 없다.");
			}  
			
		};//익명 클래스		
		annoy.exec();

	}

}

ActionExam

package inner03_annoymous;

public class ActionExam {

	public static void main(String[] args) {
		// 객체 생성
		//1.구현 클래스를 통한 객체생성
		//추상               구현
		Action action=new MyAction();
		action.exec();
		
		
		//2.익명 클래스 : 클래스 이름이 없다.
		//일반클래스 (클래스 선언---> 객체 생성)
		//익명클래스 (추상클래스를 구현하는 구현 클래스가 없다)
		//형태 :타입 변수명 =new 타입() {    }
		
		Action annoy = new Action() {

			@Override
			public void exec() {
				System.out.println("익명클래스는 1회용 클래스다 .그래서 이름이 없다.");
			}  
			
		};//익명 클래스		
		annoy.exec();

	}

}