![[기술 면접] 4. 추상클래스와 인터페이스를 설명해보세요. 1 추상클래스와 인터페이스를 설명해보세요.](http://allhoneytip.com/wp-content/uploads/2023/08/제목을-입력해주세요__복사본-13-001-300x300-optimized.png)
저번 시간에 이어서, 추상클래스 / 인터페이스 / 클래스 / 객체 등의 헷갈릴 수 있는 표현들에 대해 알아보겠습니다. 각 항목을 비교하여 설명할 수 있어야합니다. 이번 기회에 한 번 정리하고 가시길 바랍니다.
![[기술 면접] 4. 추상클래스와 인터페이스를 설명해보세요. 2 추상클래스 / 인터페이스 / 클래스 / 객체](http://allhoneytip.com/wp-content/uploads/2023/07/image-59-1024x512-optimized.png)
Q: 추상클래스와 인터페이스를 설명해보세요.
추상클래스는 미완성 메서드를 포함하고 있는 클래스로 인스턴스 생성은 불가능하며 다른 클래스인 자손 클래스를 작성하는데 도움을 줄 목적으로 작성합니다. 또한 단일 상속만 가능합니다.
인터페이스는 추상 자료형으로 클래스들이 구현해야 할 동작을 지정하는 데 사용됩니다. 선언과 구현을 분리해 표준화가 가능하며 다중 상속이 가능하므로 공통된 기능이 있다면, 협력 관계를 맺어줄 수 있다는 장점이 있습니다.
- implements가 아닌, extends
자바8 이후 인터페이스에 디폴트 메서드가 추가되어, 추상클래스와의 차이가 점점 모호해지고 있습니다.
Q: Class와 Instance는 메모리의 각각 어느 부분에 저장되나요?
클래스는 Code에 저장되고, 인스턴스는 Heap에 저장됩니다.
Q: 왜 Class는 Code에 저장되고, Instanace는 Heap에 저장되는지 알고 있나요?
클래스는 프로그램 코드의 일부로써 클래스의 메서드, 속성 등의 필요한 코드가 있을 때, 해당 Code를 참조해야 합니다.
인스턴스는 Runtime 중에 동적으로 생성되고 해제되기 때문에 Heap에 저장됩니다.
Q: 객체와 인스턴스의 차이가 무엇인가요?
객체(Object)는 클래스(Class)의 인스턴스(Instance)입니다. 클래스는 객체를 생성하기 위한 일종의 템플릿이고, 객체는 해당 클래스를 기반으로 생성된 것입니다. 이때, 클래스를 기반으로 생성된 실제 객체가 메모리에 할당된 것을 인스턴스라고 합니다.
마치며
추상클래스 / 인터페이스 / 클래스 / 객체 등의 헷갈릴 수 있는 개념들에 대해 알아보았습니다. 알고 지나친다 해도 막상 설명해보라고 하면 말문이 막히기 십상인 개념들이라고 생각합니다. 머릿속에 그림을 그려보면서 각각이 무엇인지, 어떤 연관 관계가 있는지 설명할 수 있게 학습하시길 권합니다.
다음 시간에는, Java에서의 정적 호출과 동적 호출의 차이에 대해 알아보겠습니다.
![[기술 면접] 4. 추상클래스와 인터페이스를 설명해보세요. 2 추상클래스 / 인터페이스 / 클래스 / 객체](http://allhoneytip.com/wp-content/uploads/2023/07/image-59-1024x512-optimized.png)
답글 남기기