Java 내부 class 종류

2023. 1. 28. 22:48Java

프로젝트 내 src 내 javabasic 패키지 내 Ex10InnerClass.java

package javabasic;

abstract class Hello {
	abstract public void showMessage();
}

public class Ex10InnerClass {
	Hello hello1 = new Hello() {

		@Override
		public void showMessage() {
			// TODO Auto-generated method stub
			System.out.println("버튼 이벤트를 처리했어요");
		}
	};

	Hello hello2 = new Hello() {

		@Override
		public void showMessage() {
			// TODO Auto-generated method stub
			System.out.println("데이타 처리를 했어요");
		}
	};

	class SubHello extends Hello {
		@Override
		public void showMessage() {
			// TODO Auto-generated method stub
			System.out.println("이미지 처리를 했어요");
		}
	}

	public void write() {
		SubHello s = new SubHello();
		s.showMessage();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Ex10InnerClass ex = new Ex10InnerClass();
		ex.hello1.showMessage();
		ex.hello2.showMessage();
		ex.write();

		Ex10InnerClass.SubHello h = ex.new SubHello();
		h.showMessage();
	}

}
버튼 이벤트를 처리했어요
데이타 처리를 했어요
이미지 처리를 했어요
이미지 처리를 했어요

 

=====================

 

내부 클래스에는

 

1 인스턴스 내부 클래스

2 static 내부 클래스 ( static 멤버 클래스)

3 지역 내부 클래스 (local 내부 클래스)

4 익명 내부 클래스

 

가 있다.

 

지역 내부 클래스

>>>

메서드 안에서도 클래스를 지역변수 처럼 선언해서 사용할 수 있다.

이를 지역 중첩 클래스 라고 일컫기도 한다.

이런 지역 내부에 선언된 클래스는 메서드 안에서만 그 클래스의 객체를 생성 할 수 있다.

이런 지역 내부에 선언된 클래스는 메서드 안에서만 그 클래스의 객체를 생성 후 그 클래스의 메서드를 호출이 가능하다.

 

https://velog.io/@wijoonwu/%EB%82%B4%EB%B6%80-%ED%81%B4%EB%9E%98%EC%8A%A4-Inner-Class

 

내부 클래스 (Inner Class), 익명 클래스

내부 클래스 종류 4가지(인스턴스/스태틱/로컬/익명)에 대해 정리

velog.io

 

익명 내부 클래스

>>>

익명 중첩 클래스

익명 클래스는 추상 클래스를 상속받는 클래스를 굳이 만들어낼 필요가 없는 경우에 사용한다.

추상 클래스를 상속받는 클래스가 해당 클래스 안에서만 사용되고

다른 클래스에서는 전혀 사용할 필요가 없을 때 사용한다.

 

부모인 추상 클래스를 상속받은 익명 클래스를 만들어서 사용하면

번거롭게 자식 클래스를 별도로 생성하지 않아도 된다.

'Java' 카테고리의 다른 글

Java WindowListener  (1) 2023.01.28
Java 익명 내부 class  (0) 2023.01.28
Java 내부 class  (0) 2023.01.28
Java abstract  (0) 2023.01.27
Java - 부모 class 로 선언하고 자식 class 로 생성하기  (0) 2023.01.27