JAVA

[JAVA] 윤성우 자바 네스티드(Nested) 클래스와 이너(Inner) 클래스 ③

빙하둘리 2022. 11. 13. 15:51
728x90

윤성우 자바 네스티드(Nested) 클래스와 이너(Inner) 클래스 ③

private는 외부 접근 안 하겠다.

private class Printer implements Printable은 Papers 클래스 안에 감춰져버렸다.

 

멤버 클래스의 기본) 클래스 안에 감출 것이다.

감춰도 Printer 인스턴스를 노출 시킬 수도 있다.

 

getPrinter() 함수 호출 시 인스턴스를 생성하고 인스턴스의 참조값이 반환될 것

너는 그걸 Printable 인터페이스의 참조 변수로 받아라. 거기다 참조값을 저장해.

```java

Printable prn = p.getPrinter();

```

그래서 Printable prn이라는 변수가 public Printable getPrinter() 메서드의 반환값 new Printer()를 참조하게 된다.

이 참조변수 prn을 대상으로 print() 메서드 호출 시 무언가를 출력해줄 거야.

 

단순히 생각하면, main 함수 입장에서는 Printer라는 클래스 존재를 모른다.

main method 입장에서는 Printer 클래스를 신경 안 써도 된다. Printer 클래스의 메서드를 고치든, Printer 클래스의 이름이 바뀌든 main 함수는 관심없어.

 

반복자와 유사-반복자 사용 시, 반복자의 클래스 이름을 모른다.

 

근본적으로 반복자 사용 시, Itr 클래스의 인스턴스를 생성해서 반환해줬는데

내부 클래스를 쓰니 반복자 Itr 클래스를 감추게 되었다.

 

 

실제로 Itr 클래스 내에서 ArrayList에 직접 접근이 가능해서 우리가 반복자를 쓸 수 있었던 것

근데 Itr 클래스는 내부 클래스로 감춰졌다.

 

 

찾아볼 것) 내부 클래스의 접근 범위

728x90