유블로그

[Java] Inner class 본문

Java

[Java] Inner class

yujeong kang 2020. 8. 10. 15:51
  • Class 안에서 다시 정의되는 Class
  • 바깥 Class의 일부처럼 사용
  • 다른 Class에서 사용하지 않고 바깥 Class에서만 많이 사용
  • 별도의 객체가 만들어진다.

 

< inner class - anonymous >

  • class 안에서 이름 없이 만들어지는 inner class
  • 재사용되지 않고 한 번만 사용된다. 즉 객체 생성 코드에 바로 class 내용 전달됨
  • event handling 처럼 interface에 정의된 method의 구현부를 객체 생성 시점에 전달한다.
class AAA {
	void a() {
		System.out.println("AAA-a");
	}
	void b() {
		System.out.println("AAA-b");
	}
}
class BBB {
	AAA a;
	
	void setAAA(AAA newa) {
		a = newa;
	}
	AAA getAAA() {
		return a;
	}
}
public class anonymous {
	public static void main(String[] args) {
		
		BBB a = new BBB();
		a.setAAA(new AAA() {
			void a() {
				System.out.println("바꾼 AAA-a");
			}
		});
		
		a.getAAA().a();	// 출력결과 : 바꾼 AAA-a
		
	}
}

<inner class - static >

  • class 안에서 다시 정의되는 class
  • 다른 class 에서 사용하지 않고 바깥 class에서만 의미가 있을 경우 많이 사용
  • 별도의 객체를 만들지 않고 사용할 수 있다.
class AAA {
	static class BBB{
		public static String str = "BBB";
	}
}

public class innerclassStatic {
	public static void main(String[] args) {
		
		System.out.println(AAA.BBB.str);
	}
}

'Java' 카테고리의 다른 글

[Java] Iterator  (0) 2020.08.11
[Java] Collections (+Generic)  (0) 2020.08.11
[Java] Interface - 추상화  (0) 2020.08.10
[Java] 다형성, 상속  (0) 2020.08.10
[Java] 상속과 접근제한자  (0) 2020.08.10