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 |