해당 포스트 작성의 목적
자바의신1 16장 클래스 안의 클래스 단원을 복습 및, 오류로 인해 공부하지 않았던 점을 정리하며 공부한다. 클래스안의 클래스는 무엇이있고, 왜 사용하는지 등을 알아보자
Nested클래스
자바에서는 클래스 안에 클래스가 들어갈 수있다. 이런 클래스를 Nested클래스 라고 부른다.
Nested클래스의 존재이유중 가장 큰 이유는
코드의 간결성때문이다. 이런 Nested클래스에는 여러 종류가 있는데, static 키워드 유무와, 이름의 유무에 따라 아래 그림과 같이 나눠진다.
앞서 말했지만 Nested 클래스를 사용하는 이유에 대해서 좀더 알아보자
- 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을때
- 캡슐화가 필요할 때 (A클래스에 private변수를 선언, 이 변수에 접근하고 싶은 B클래스를 만들고 이 B클래스를 외부로 노출시키고 싶지 않을때) 즉, 내부구현을 감추고 싶을때 사용한다.
- 소스의 가독성과 유지보수성을 높이고 싶을때
첫번째 이유가 StaticNested클래스를 사용하는 이유이고, 두번째가 inner클래스를 사용하는 이유이다.
캡슐화란?
연관된 "상태"(변수)와 "행위"(메소드)를 결정하는 기능을 묶어 주는 것을 의미한다. 이렇게 기능을 묶어주면 외부에서 접근 가능한 대상을 제한하는
정보은닉이가능하다. 그리고 하나의 객체를 위한 코드가, 다른 객체를 위한 코드와 무관하게 수행할 수있는 모듈화가 가능해진다. 그리고 자바에서는이렇게 묶인 가장 작은 단위가 클래스이다.
포스트 작성을 통해 알게된 점
아직 교재의 예제코드를 따라했는데, 오류가 발생하는 원인을 찾지 못했다. 무시하고 넘어가려 했으나, 계속해서 신경이쓰여 1시간의 공부에도 크게 알아가는 것은 없던 시간이다.
추가적으로 어제 멘토링에서 '다형성'을 물어보신 만큼, 캡슐화에 대해서 다시한번 보게되었는데, 인터페이스를 쓰는 이유와도 언뜻 비슷함을 느꼇다. 내부구현은 알수없고, 오로지 리턴값만 받으면 되는....
References
자바의신vol1
'프로그래밍 > Java' 카테고리의 다른 글
클래스안의 클래스-2 (0) | 2021.05.17 |
---|---|
GC Log보는 방법 (0) | 2021.05.13 |
JVM이란 무엇인가 (0) | 2021.05.13 |
String의 == 연산시 동작 (0) | 2021.05.13 |
equals() 와 == (0) | 2021.05.12 |
Uploaded by Notion2Tistory v1.1.0