[자바] 자바 inner class 4가지 공부해보기

heegon·2025년 7월 5일

JAVA

목록 보기
16/20

Member Inner Class

아래 코드와 같이 클래스 내부에 있는 또다른 클래스를 말한다.
static 메소드 내부에서 객체를 생성하여 접근할 수 있는데, outter-class(현재 StudyJava)의 객체를 먼저 생성해주고, 아우터클래스의 객체를 이용하여 inner-class(현재 InnerClass)의 객체를 생성해주어야 한다.

Member Inner Class 예시코드

public class StudyJava {
	
	class InnerClass {
		public void disp() {
			System.out.println("멤버 이너 클래스 / InnerClass에 접근 완료!");
		}
	}
	
	public static void main(String[] args) {
		StudyJava sj = new StudyJava();
		InnerClass ic = sj.new InnerClass();
		ic.disp();
	}

}

Static Inner Class

멤버 이너 클래스와 유사하나, 내부 클래스의 앞에 static 키워드가 붙는다. static 이라서 메인 메소드에서 객체 생성 방법이 달라진다.

Static Inner Class 예시코드

public class StudyJava {
	
	static class InnerClass {  // ⭐ static inner class
		public void disp() {
			System.out.println("static 이너 클래스 / InnerClass에 접근 완료!");
		}
	}
	
	public static void main(String[] args) {
		StudyJava.InnerClass ic = new StudyJava.InnerClass(); //아우터클래스명.이너클래스명 객체 
		ic.disp();
	}

}

Local Inner Class

멤버 이너 클래스가 클래스 내부(outter-class)에 선언된 또다른 클래스(inner-class)라면, Local Inner Class 는 메소드 안에 선언된 또다른 클래스를 말한다.

Local Inner Class 예시코드

public class StudyJava {
	
	public static void main(String[] args) {
		
		class InnerClass {
			public void disp() {
				System.out.println("Local 이너 클래스 / InnerClass에 접근 완료!");
			}
		}
		
		InnerClass ic = new InnerClass();
		ic.disp();
	}

}

Anonymous Inner Class

인터페이스나 추상클래스를 일회성으로 구현할 때 사용하는 클래스.

Anonymous Inner Class 예시코드

abstract class Animal {
	abstract void sound();
}

public class StudyJava {
	
	public static void main(String[] args) {
		Animal a = new Animal() { //추상 클래스의 객체 생성 과 동시에 { 중괄호 } 사용해서 내부에 오버라이딩
			@Override
			void sound() { //추상 메소드 구현
				System.out.println("멍멍");
			}
		};
	}

}
profile
❤️

0개의 댓글