김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향프로그래밍
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • httperror
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 풀스택
  • 코딩공부
  • 프론트앤드
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • 자바
  • web.xml수정
  • 코딩
  • 자바공부
  • HTML공부
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 코딩공부 #자바공부
  • 백앤드
  • http에러메세지
  • 개발자
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • ErrorPage

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Java/: 기본 익히기

[JAVA] #8-5 익명 내부 객체(Anonymous class)

2022. 9. 15. 17:36

1. 익명?

 

 익명이란 말 그대로 이름이 없는 객체이다.

 그래서 무명 클래스라고 부르기도 한다.

 이 게시물에서는 인터페이스 안에서 사용되는 익명 내부 객체에 대해 알아보려 한다.

 

 우선 익명을 이해하기 위해서는 이름이 없는 이유에 대해 생각해보아야 한다.

 왜 이름이 없을까?

 기억될 필요가 없다는 뜻이다.

 즉, 다시 불러질 이유가 없는 일시적으로 한번만 사용되고 버려지는 객체라는 뜻이다.

 

 만약 우리가 프로그래밍을 하는데, 단 한번만 사용될 목적의 코드인데 10만개의 데이터가 입력이 되어야한다면 어떻게 할까?

 10만개의 클래스를 만들어 딱 한번만 사용하고 버릴까?

 이럴 때 사용되는 것이 바로 익명 객체인 것이다.

 

 이러한 익명 객체는 모바일 응용앱, JavaScript, jQuery 등에서 많이 사용된다

 이제 익명 객체를 만드는 문법에 대해 알아보자.

 

 

2. 익명 객체 문법

 

 익명 객체(클래스)를 구현하는 방법은 크게 2가지가 있고, 그 안에서도 여러 방법으로 나뉜다.

 - 부모 / 자식간 상속 아래에 익명 자식객체를 생성하는 방법

 - 인터페이스를 구현한 익명 구현객체를 생성하는 방법

 

 하지만 이번에는 인터페이스 안에서 주로 사용되는 익명 객체 문법 딱 한가지만 알아보려 한다.

 코드를 작성해가면서 알아보자.

 우선 클래스와 인터페이스부터 만들었다.

interface IMessage{
	public void msgPrint();	// 추상메소드
} // interface end

class Message implements IMessage{
	@Override
	public void msgPrint() {
		System.out.println("Message 클래스");
	}
} // class end

 

 객체를 생성할 때는 아래와 같은 형식으로 생성이 된다.

// [상속]
class 클래스이름1 extends 부모클래스 { ...}
부모클래스 변수 = new 클래스이름1();

// [구현]
class 클래스이름2 extends 인터페이스 { ...}
인터페이스 변수 = new 클래스이름2();

 

 하지만 익명 객체를 생성할 때는 다음과 같이 클래스 이름이 따로 없다.

 그리고 하나의 실행문(한번 실행하면 끝)이기 때문에 끝에는 세미콜론(;)을 반드시 붙여야 한다.

// 상속
부모클래스 [필드|변수] = new 부모클래스(매개값, ...) {
	// 필드
    // 메소드
};

// 구현
인터페이스 [필드|변수] = new 인터페이스() {
	// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
    // 필드
    // 메소드
};
IMessage mess = new IMessage() {
    @Override
    public void msgPrint() {
    }
};

 

 원래 IMessage는 인터페이스이기 때문에 new로 선언할 수가 없다.

 하지만 {}를 붙인 뒤 Message 클래스의 msgPrint 메서드를 오버라이드 하면 익명 객체로 사용할 수가 있다.

저작자표시 비영리 동일조건 (새창열림)

'⁂ Java > : 기본 익히기' 카테고리의 다른 글

[JAVA] #9-1 예외처리(Exception) 1 - try...catch...finally  (0) 2022.09.16
[JAVA] #8-6 이너 클래스(Inner Class)  (0) 2022.09.15
[JAVA] #8-4 인터페이스(Interface)  (0) 2022.09.15
[JAVA] #8-3 추상(Abstract)  (0) 2022.09.15
[JAVA] #8-2 다형성(Polymorphism)  (0) 2022.09.15
    '⁂ Java/: 기본 익히기' 카테고리의 다른 글
    • [JAVA] #9-1 예외처리(Exception) 1 - try...catch...finally
    • [JAVA] #8-6 이너 클래스(Inner Class)
    • [JAVA] #8-4 인터페이스(Interface)
    • [JAVA] #8-3 추상(Abstract)
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바