오늘은 java에서 지네릭스와 JVM에 대해 공부했다. 오늘 TIL에는 어제 TIL에 해야할 것으로 적어놨던 것들중 두 가지에 대해 정리해보려 한다.
추상클래스 : 미완성설계도. 추상메서드를 선언해 상속으로 자손클래스가 완성하도록 유도하는 클래스. 추상메서드가 있다는 것 외에는 일반 클래스와 다를 바가 없다. 다중상속 불가능.
인터페이스 : 기본설계도. 인터페이스끼리 다중상속가능. 다른클래스 작성에 도움주는 목적으로 작성. 생성자와 일반변수는 가질 수 없다. 일반적으로 ~able
의 형용사형으로 네이밍.
추상클래스는 상속관계에서 그대로 자신의 기능을 하위로 확장시키는 느낌으로 사용. 클래스간의 상속 관계 구축에 초점을 맞춘다.
상속받을 클래스들이 공통으로 가지는 메소드와 필드가 많아 중복 멤버의 통합을 할 때.
상속할 객체들의 공통점을 찾아 추상화시킬 때. 명확한 계층 구조가 필요할 때.
인터페이스는 상속관계에 얽매이지 않고 공통기능이 필요할 때 마다 추상메서드를 정의해두고 구현(implements)하는 식으로 추상클래스보다 자유롭게 붙였다 떼며 사용.
구현 객체가 같은 동작을 한다는 것을 보장하는 기능에 초점.
다중구현이 가능하기 때문에 빈 껍데기 인터페이스를 선언해 마커 인터페이스로도 이용 가능.
서로 관련이 없는 클래스를 묶어주고 싶을 때.
정리 : 추상클래스는 상하관계, 상속관계에 집중해 물려줄 것이 많을 때 사용하고,
인터페이스는 기능 구현에 집중해 추상클래스보다 좀 더 자유롭게 사용.
메모리 저장 구조 정리하기
https://kyoun.tistory.com/34
http://www.tcpschool.com/c/c_memory_structure
static 변수와 메서드의 저장위치? heap? static?