Q1. 클래스란 무엇인가?
- 객체를 생성하기 위해 작성한 코드, 객체를 생성하는 틀을 의미합니다.
Q2. 클래스 내부에 선언한 변수는 무엇인가?
- 멤버 변수라고 합니다.
Q3. 클래스 내부에 선언하는 함수는 무엇인가?
- 멤버 함수 또는 메소드라고 합니다.
Q4. 클래스로 객체를 생성하면 어떤 메모리 공간을 할당 받는가?
- 메모리의 힙(heap)공간을 할당받습니다.
Q5. 디폴트 생성자란 무엇인가?
- 클래스에 선언된 생성자가 없을 때, 기본으로 생성되는 생성자를 의미합니다.
Q6. 접근 제어자란 무엇인가?
- 멤버 변수 혹은 멤버 함수에 대한 접근 수준을 제어하는 키워드를 의미합니다.
Q7. getter(), setter() 메서드는 왜 선언되어야 하는가?
- 멤버 변수가 접근 제어자 private이나 package-private에서 생성되었을 때,
private의 경우 다른 클래스에서, package-private의 경우 패키지 밖의 다른 클래스에서
해당 멤버 변수에 직접 접근할 수 없으므로,
setter() 메소드를 통해 값을 할당하고, getter() 메소드를 통해 값을 호출해야 합니다.
Q8. this란 무엇인가?
- 객체 자기 자신을 가리키는 키워드를 의미합니다.
Q9. 클래스와 멤버의 접근 권한은 어떻게 하는 것이 좋은가?
- 가능한 한 private이나 package-private으로 하는 것이 좋습니다.
즉, 접근 권한을 최소화하는 것이 좋습니다.
Q10. 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 무엇인가?
- 잘 설계된 컴포넌트는 모듈화가 잘 되어 있고, 접근 권한이 최소화되어 있습니다.
Q11. 잘 설계된 컴포넌트의 특징은 무엇인가?
- Q10과 같습니다.
Q12. 정보 은닉의 장점은 무엇인가?
- 정보 은닉의 장점은 다음과 같습니다.
(1) 재사용이 쉽다
- 접근 권한이 최소화되고, 보호되어 있으므로, 클래스를 재사용하기가 쉽습니다.
(2) 유지보수 비용이 적다
- 클래스가 독립적으로 동작하므로, 디버깅 비용이 낮습니다.
(3) 개발 속도를 향상시킬 수 있다
- 여러 컴포넌트를 병렬로 개발할 수 있으므로, 개발 속도가 향상한다.
Q13. 정보 은닉의 핵심은 무엇인가?
-
Q14. 클래스의 공개 API를 세심하게 설계한 후 어떤 일을 해야 하는가?
-
Q15. public 가변 필드를 갖는 클래스는 일반적으로 어떤 특징을 갖는가?
-
Q16. 자바9에 새로 추가된 시스템과 그로 인한 변화는 무엇인가?
-
Q17. public 클래스에서는 public 필드가 아닌 무엇을 사용해야 하는가?
Q18. Q17의 것을 사용하면 얻을 수 있는 이점은 무엇인가?
-
Q19. public 클래스가 필드를 공개하면 발생하는 문제가 무엇인가?
Q19. private 클래스와 package-private 클래스의 경우 Q17의 경우와 어떻게 다른가?
-
Q20. 자바 플랫폼 라이브러리에는 어떤 불변 클래스들이 존재하는가?
Q21. 불변 클래스의 장점은 무엇인가?
참고
- Do it 자바 프로그래밍 입문
- 이펙티브 자바
- Q1~Q8(Do it 자바프로그래밍 입문) 5.15
- Q9~Q12(이펙티브 자바) 5.15
- A1~A12 5.16
- Q13~Q21(이펙티브 자바) 5.16
'Java' 카테고리의 다른 글
자바 일반 (0) | 2022.05.16 |
---|---|
제네릭 (0) | 2022.05.13 |
Wrapper 클래스 (1) | 2022.05.13 |
String 클래스 (0) | 2022.05.13 |
equals()와 hashcode() (0) | 2022.05.13 |