본문 바로가기

Java

클래스와 인터페이스

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. 자바 플랫폼 라이브러리에는 어떤 불변 클래스들이 존재하는가?

- String 클래스, Wrapper 클래스 등의 불변 클래스가 존재한다. 

 

Q21. 불변 클래스의 장점은 무엇인가?

 

 

Q22. 자바 인터페이스는 무엇의 집합을 의미하는가?

- 메소드의 집합을 의미한다. 

 

Q23. java.lang 패키지에 정의된 Comparable interface의 소스 코드는 어떠한가?

 

Q24. 추상 클래스와 인터페이스는 무엇을 도와주는 도구인가?

- 추상화를 도와주는 도구이다. 

 

Q25. 추상 클래스를 선언하기 위해서는 어떤 키워드가 필요한가?

- abstract 키워드가 필요하다. 

 

Q26. 추상 클래스에는 어떤 메소드가 있고, 그 메소드의 특징은 무엇인가?

- abstract 메소드가 있고, 구현부가 없다는 것이 특징이다. 

 

Q27. 추상 클래스를 상속 받으면 반드시 무엇을 해야 하는가?

- abstract 메소드를 구현해야 한다. 

 

Q28. 추상 클래스는 무엇을 정의할 수 있는가?

 

Q29. 추상 클래스는 무엇을 생성할 수 없는가?

 

Q30. 추상 클래스의 추상 메서드에 대한 제한 조건은 무엇인가?

 

Q31. 인터페이스에서 구현부가 있는 메서드를 정의하려면 무엇이 필요한가?

- default 키워드가 필요하다. 

 

Q32. 인터페이스는 무엇을 생성하고 정의할 수 없는가?

 

Q33. 인터페이스에 선언된 변수는 모두 무엇을 선언해야 하는가?

 

Q34. 인터페이스에서 default 메서드도 아니고, static 메서드도 아닌 메서드는 모두 무엇이 선언된 메서드인가? 

- public static 메서드이다. 

 

Q35. 인터페이스를 구현하는 클래스는 반드시 무엇을 해야 하는가?

- 추상 메소드를 구현해야 한다. 

 

Q36. 인터페이스에는 무엇을 선언해야 하는가?

 

Q37. 현업에서는 추상 클래스와 인터페이스 중 무엇을 더 많이 사용하는가?

- 인터페이스를 더 많이 사용한다. 

 

Q38. 추상 클래스와 인터페이스를 동시에 사용할 수 있는가?

- 동시에 사용할 수 있다. 

 

 

참고

- Q1~Q8(Do it 자바프로그래밍 입문) 5.15
- Q9~Q12(이펙티브 자바) 5.15

- Q13~Q21(이펙티브 자바) 5.16

- Q22~Q23 (자바로 배우는 핵심 자료구조와 알고리즘) 5.20

- Q24~Q38 코드라떼 6/3

- A1~A12 5.16

'Java' 카테고리의 다른 글

파일 I/O  (0) 2022.05.20
자바 일반  (0) 2022.05.20
제네릭 프로그래밍  (0) 2022.05.20
Wrapper 클래스  (0) 2022.05.20
String 클래스  (0) 2022.05.20