더북(TheBook)

14. Network 클래스를 컴파일하자. 내부 클래스 파일의 이름이 Network$Member.class라는 것에 유의한다. 생성된 코드를 javap 프로그램으로 조사해 보자(리눅스, macOS에서는 javap를 실행할 때 $ 기호 앞에 \를 붙여야 한다).
다음 명령은 메서드와 인스턴스 변수를 표시한다.

$ javap -private Classname


외부 클래스 참조는 어디에 있는가?

15. 2.6.1 정적 중첩 클래스Invoice 클래스를 완전히 구현하라. 청구서를 출력하는 메서드와 샘플 청구서를 만들어 출력하는 데모 프로그램도 작성하라.

16. 경계가 없는 문자열의 큐를 표현하는 Queue 클래스를 구현하라. 뒤에 추가하는 add 메서드와 앞에서 제거하는 remove 메서드를 구현하라. 요소들은 노드의 연결 리스트로 저장한다. Node는 중첩 클래스로 만든다. Node가 정적 클래스여야 하는가, 그렇지 않아야 하는가?

17. 연습문제 16에서 만든 Queue 클래스용 반복자(이터레이터(iterator))를 구현하라. 큐 반복자는 큐의 요소들을 차례로 내어 주는 객체다. Iterator 클래스는 nexthasNext 메서드를 구현한 중첩 클래스로 만든다. Queue.Iterator를 돌려주는 Queueiterator() 메서드를 구현하라. Iterator가 정적 클래스여야 하는가, 그렇지 않아야 하는가?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.