우주코딩
익명 클래스, 익명 클래스의 생성자 호출 본문
익명클래스
인스턴스를 한 번 만 생성할 것이라면, 로컬 클래스로 정의하는 것 보다 익명 클래스로 정의하는 것이 더 낫다.
=> 특히 객체를 사용하려는 곳에 바로 익명 클래스를 정의하면 읽기 쉽기 때문에 소스 코드를 유지보수 하기가 더 좋다.
익명 클래스로 인터페이스 구현하기
인터페이스명 레퍼런스 = new 인터페이스명() {};
- 호출하는 생성자는 수퍼 클래스의 생성자이다.
익명 클래스로 인터페이스 구현하기
수퍼클래스 레퍼런스 = new 수퍼클래스() {};
- 호출하는 생성자는 수퍼 클래스의 생성자이다.
익명클래스 생성자 호출
익명 클래스는 생성자를 직접 정의할 수 없다. 그러나 컴파일러가 컴파일할 때 익명 클래스의 생성자를 만든다. 대신 인스턴스 블록으로 생성자를 대신한다.
- 인스턴스 블록에 작성한 코드는 결국 컴파일러가 자동 생성한 생성자에 들어간다.
- 그래서 인스턴스 블록에 작성한 코드가 실행될 것이다.
- 물론 그전에 먼저 수퍼 클래스의 생성자가 실행될 것이다.
익명 클래스를 정의할 때 호출할 수퍼 클래스의 생성자를 지정할 수 있다.
- 문법:
new 수퍼클래스명(파라미터,...) {} - 즉 생성자에 넘겨주는 파라미터로 호출될 생성자를 지정한다.
1) 수퍼 클래스의 기본 생성자 호출하기
A obj = new A() {};
obj.print();
2) 수퍼 클래스의 다른 생성자 호출하기
- 다음과 같이 익명 클래스의 인스턴스를 만들 때 값을 지정하면 그 타입의 값을 받는 수퍼 클래스의 생성자가 호출된다.
obj = new A("홍길동") {};
obj.print();
'자바 본 강의' 카테고리의 다른 글
자바 API : ArrayList에 대해 (0) | 2021.08.23 |
---|---|
제네릭, 제네릭 레퍼런스, 제네릭 파라미터 (0) | 2021.08.23 |
inner 클래스 사용, 클래스 import, 로컬 클래스, 로컬 클래스와 로컬 변수 (0) | 2021.08.17 |
인터페이스 구현하는 두가지 케이스, 패키지에 직접 소속된 클래스, 중첩 클래스, inner 클래스 (0) | 2021.08.13 |
메서드 명칭, 인터페이스와 추상클래스의 콜라보, default 메서드의 필요성, 인터페이스의 static 메서드, 인터페이스와 추상클래스의 상속 (0) | 2021.08.13 |
Comments