<aside> 💡

객체 지향 프로그래밍에서 클래스 들은 서로 긴밀한 관계를 맺고 상호작용을 한다.

어떤 클래스는 여러 클래스와 관계를 맺지만 어떤 클래스는 특정 클래스와 관계를 맺는다. 여러 클래스와 관계를 맺는 경우 독립적으로 정의 하는 게 좋으나, 특정 클래스와만 관계를 맺는 경우 클래스의 내부에 정의하는게 좋다.

</aside>


1. Syntax

class Outer_Demo {
    class Inner_Demo {
    }
}

2. 내부 클래스

2-1. 내부 클래스 (Inner Class)

<aside> 💡


2-2. 내부 클래스의 장점

- 클래스를 논리적으로 그룹 화 한다.

- 더욱 타이트한 캡슐화 적용

package example;

public class InnerClass {
	private int anilmalLife = 100;
	
	private class Animal {
		private String name = "호랑이";
		
		int getOuter() {
			return anilmalLife;  // 내부 클래스에서 외부 클래스의 private 멤버를 제한 없이 접근 가능
		}
	}
	
	public void mehtod() {
		Animal animal = new Animal();
		
		// Getter 를 사용하지 않아도 내부 클래스의 private 멤버에 접근가능
		System.out.println(animal.name); // 내부 클래스의 "호랑이" 출력
		
		// 내부클래스에서 외부클래스의 private 멤버를 출력 객체 animal -> InnerClass 클래스의 animalLife에 접근
		System.out.println(animal.getOuter()); // InnerClass 클래스의 100 출력
		
	}
}