[Java] 익명 객체(Anonymous Object)

2024. 5. 20. 14:45· Language/JAVA
목차
  1. 익명 객체
  2. 1.일반적인 상속
  3. 2.익명객체 생성
  4. 2-1.필드 생성
  5. 2-2.로컬 생성
  6. 2-3.매개값
  7. 3.익명객체 외부사용
  8. 4.익명 구현 객체
  9. 4-1.일반적인 구현 객체생성
  10. 4-2.익명 구현 객체 생성
728x90


익명 객체

익명 객체는 주로 특정 작업을 한 번만 수행할 필요가 있을 때 사용한다.
클래스가 재사용되지않고 특정위치에서만 사용된다면 익명 객체를 사용한다.
이때 부모클래스 변수는 이름없는 자식 객체를 참조하게된다.
부모클래스 [필드|변수] = new 부모클래스(){

};

 

 

1.일반적인 상속

다음은 일반적인 상속 방법이다. 
자식 클래스 Child 를 만들어서 사용하였다.
그뒤 자식클래스를 사용할때 필드에서 new연산자를 통해 자식 객체가 부모타입 변수에 대입하게하였다.
package a16_Anonymous;

public class Parent {
    void method(){}
}


//일반상속
class Child extends Parent{
    @Override
    void method() {}
}


class ClassA{
    Parent parent = new Child();
}

 

 

 

2.익명객체 생성

하지만 자식 클래스가 재사용되지않고 특정 위치에서만 사용된다면 익명자식객체를 생성하여 사용할수있다.
이때 아래에서는 parent 변수에 이름없는 Parent의 자식객체를 생성하여 대입한다

 

2-1.필드 생성

ClassB의 필드영역에서 선언하였다. 
package a16_Anonymous;

public class Parent {
    void method(){}
}



class ClassB{
    //필드선언
    Parent parent = new Parent(){
        @Override
        void method(){}
    };
}

 

 

 

 

2-2.로컬 생성

ClassB의 메소드영역에서 로컬변수로 선언되었다. 
package a16_Anonymous;

public class Parent {
    void method(){}
}

//익명
class ClassB{
    //로컬
    void method1(){
        Parent parent1= new Parent(){
            @Override
            void method(){}
        };
    }
}

 

 

 

 

2-3.매개값

method2의 매개변수가 부모타입이고
매개값으로 익명 자식객체를 생성하여 대입하였다.
package a16_Anonymous;

public class Parent {
    void method(){}
}

//익명
class ClassB{
   //매개변수
    void method2(Parent parent1){}

    void method3(){
        method2(new Parent(){
            @Override
            void method(){}
        }   
        );
    }
}

 

 

3.익명객체 외부사용

이때 익명 자식객체에서 새롭게 정의된 필드와 메소드는 외부에서 접근할수없고,
외부에서는 익명객체의 필드중 부모타입에서 선언된것만 접근할수있다.
//익명
class ClassB{
    //필드선언
    Parent parent = new Parent(){
        void newmethod(){}
        
        @Override
        void method(){}

    };
    void method4(){
   	//새롭게 정의된 메소드 사용불가
        //parent.newmethod();
        
        //사용가능
        parent.method();
    }

 

 

 

 

 

 

4.익명 구현 객체

클래스때와 같이 인터페이스를 사용할때 구현 클래스가 재사용되지않고 특정위치에서만 사용될때 생성하여 사용한다.

4-1.일반적인 구현 객체생성

package a16_Anonymous;

public interface RemoteControl {
    void TurnOn();
}

class TV implements RemoteControl{
    @Override
    public void TurnOn() {}
}

class ClassA{
    RemoteControl remote= new TV();
}

 

 

 

4-2.익명 구현 객체 생성

package a16_Anonymous;

public interface RemoteControl {
    void TurnOn();
}


class ClassA{
    RemoteControl remote= new RemoteControl() {
        @Override
        public void TurnOn() {}
    };
}

 

 

728x90
저작자표시 (새창열림)

'Language > JAVA' 카테고리의 다른 글

[Java] 예외 클래스(Exception Class)  (0) 2024.05.20
[Java] 중첩클래스 접근 제한  (0) 2024.05.19
[Java] 중첩클래스 인스턴츠 멤버,정적,로컬 클래스  (0) 2024.05.19
  1. 익명 객체
  2. 1.일반적인 상속
  3. 2.익명객체 생성
  4. 2-1.필드 생성
  5. 2-2.로컬 생성
  6. 2-3.매개값
  7. 3.익명객체 외부사용
  8. 4.익명 구현 객체
  9. 4-1.일반적인 구현 객체생성
  10. 4-2.익명 구현 객체 생성
'Language/JAVA' 카테고리의 다른 글
  • [Java] 예외처리(Exception Handling)
  • [Java] 예외 클래스(Exception Class)
  • [Java] 중첩클래스 접근 제한
  • [Java] 중첩클래스 인스턴츠 멤버,정적,로컬 클래스
아사_
아사_
프로그래밍 공부한거 정리해두는 메모장 블로그
아사_
개발공부 블로그
아사_
전체
오늘
어제
  • 분류 전체보기
    • FrontEnd
      • html
      • css
      • JavaScript
      • Node.js
      • React
      • React Native
    • BackEnd
      • SpringBoot
      • FastAPI
      • PHP
      • Flask
      • supabase
    • Language
      • Python
      • JAVA
      • Kotlin
      • C++
    • Development Tools
      • AWS
      • GIT,GITHUB
      • Docker
      • 메시지 브로커
      • 기타 도구,플랫폼
    • Computer Science
      • 개발지식
      • Server&Network
      • Algorithm&DataStructure
      • Security
      • DataBase
      • OS
    • AI
    • 기타
      • 잡다
      • Android
      • 도서
    • 클론코딩
      • 생활코딩 Express.js
      • 점프 투 장고
      • 생활코딩 Node.js
    • 프로젝트
      • DevQuest

인기 글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.2
아사_
[Java] 익명 객체(Anonymous Object)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.