[TIL]20210916

박창현·2021년 9월 16일
0

TODAY I LEARNED

목록 보기
47/53

어렵고 이해안되는 것들을 내가 이해할 수 있는 느낌으로 풀어써본다.

자바

익명 객체 (익명 클래스)

익명 객체는 이름이 없는 객체이다.
익명 객체는 한번쓰고 버리는 등 이후에 사용하지 않아 자식 클래스를 굳이 선언하지 않으려 한다. 즉, 클래스의 장점인 재사용성을 포기하는 거 같다.

책에서는

  • 일반적인 경우
    class 자식클래스1 extends 부모클래스 { ... }
    부모클래스 변수별칭 = new 자식클래스1();
  • 익명 객체를 사용할 경우
    부모클래스 변수 = new 부모클래스() { ... } ;

이렇다는데 솔직히 글자량 달라진거 말고는 이해가 안됐다.

좀 더보고 한번에 이해가게 풀이하자면

오히려 챕터이름이 "익명 객체" 라서 더 헷갈린 거 같다.
"익명 클래스를 내부에서 선언하는 이름을 가진 객체" 가 내가 이해하기엔 더 쉬운거 같다.
부모클래스 [변수1 | 필드1] = new 부모클래스() { ... } ; 를 보면 뒤에 { ... }; 를 제외하면 일반적으로 부모클래스로 객체하나 만드는 것과 동일하다.
여기서 extends를 통해서 새롭게 자식클래스를 만드는 대신 이 자식클래스에 적을 내용들을 { ... } 에 적어준다.
일단, 내가 느껴지는 바로는 자식클래스의 이름은 안적으니 익명이지만 "변수1" 또는 "필드1"이라는 이름을 가지고 있으니까 객체가 익명? 인지 모르겠다.

요약.

1. 익명 자식 객체
부모클래스 [변수 | 필드] = new 부모클래스(매개값, ...) {
  // "자식클래스"처럼 부모클래스에 얹혀 추가적으로 사용할 필드
  // "자식클래스"처럼 부모클래스에 얹혀 추가적으로 사용할 매소드
};   // ; 필수!

-----------------


2. 익명 구현 객체

인터페이스 [변수 | 필드] = new 인터페이스() {
  // 인터페이스에 선언된 추상 메소드의 실체 메소드 선언(재정의)
  // 필드
  // 메소드
}; // ; 필수!
profile
개강했기에 가끔씩 업로드.

0개의 댓글