Java

클래스와 인터페이스

Bryan Lee 2022. 5. 15. 02:05

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