Ⅱ. 익명이너클래스(Anonymous class)
1. 익명 이너클래스 ← 익명(이름을 알 수 없음) + 이너클래스
- 인터페이스의 객체를 별도로 생성하지 않고 사용가능
- 내부적으로만 호출 가능
// Example
//인터페이스를 상속한 이너클래스를 생성하여 인터페이스 객체 생성
package sample;
class A {
C c = new B();
void abc() {
c.bcd();
}
class B implements C {
public void bcd() {
System.out.println("인스턴스 이너클래스");
}
}
}
interface C {
public abstract void bcd();
}
public class Main {
public static void main(String[] args) {
// 1. 객체 생성 및 메소드 호출
A a = new A();
a.abc(); // 인스턴스 이너클래스
}
}
2. 익명 이너클래스 ← 익명(이름을 알 수 없음) + 인스턴스이너클래스
- 익명이너클래스를 사용하는 경우, 이름이 없어 한번에 객체를 2개 이상 생성 불가능
// Example1
package sample;
class Boy {
void sayHello() {
System.out.println("안녕하세요");
}
}
public class Main {
public static void main(String[] args) {
// 일회성으로 정의해서 객체를 만드는 익명클래스
Boy a = new Boy() {
void sayHello() {
System.out.println("반가워요");
}
};
a.sayHello(); // 반가워요
}
}
// Example2
package sample;
interface Car {
public abstract void drive();
}
class CarCenter {
Car morning = new Car() {
public void drive() {
System.out.println("200km 질주");
}
};
void goMorning() {
morning.drive();
}
}
public class Main {
public static void main(String[] args) {
new CarCenter().goMorning(); // 200km 질주
}
}
'Programming Language > Java' 카테고리의 다른 글
예외처리 - 1. 예외(Exception) 및 예외 처리 (0) | 2022.07.14 |
---|---|
이너클래스 - 3. 이너인터페이스(Inner interface) (0) | 2022.07.14 |
이너클래스 - 1. 이너클래스 (Inner class) (0) | 2022.07.14 |
추상클래스 - 2. 인터페이스(Interface) (0) | 2022.07.13 |
추상클래스 - 1. 추상클래스 (abstract class) (0) | 2022.07.13 |