클래스명이 없는 클래스를 객체 생성과 함께 정의 하는 클래스이다.
일반 클래스와 추상 클래스를 이용한 익명 클래스는 상속의 개념과 동일하다.
내부에서 타입에 정의된 함수를 재정의 할 수 있다.
일반 클래스를 익명 클래스로 만드는 가장 큰 목적은 함수 재정의 와 같은 내부 변경이 필요해서이다.
타입 변수명 = 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();
}
}