본문 바로가기

JAVA

추상클래스와 인터페이스 차이 이건 좋은 질문이지만 개발자들 사이에서 의견이 분분한 난제이기도 한 질문이죠! 답변자의 취향 혹은 개발철학이 많이 들어갈 수 밖에 없는 문제라 생각하는데요, 저는 어떤 공통된 기능과 형태가 필요한 아키텍쳐 (BMW, 현대, 혼다, 등 4륜자동차) 라면 Abstract class 를 사용할 것 같고 어떤 공통된 기능만이 요구되는 아키텍쳐 (엔진이 장착된 모든 기계 - 4륜자동차, 자전거, 오토바이, 선박, 트럭, 기타등등...) 라면 Interface를 사용할 것 같습니다. 인터페이스와 추상클래스의 가장 큰 차이를 알고 계시다면 이해가 쉬울겁니다. 세부 구현사항이 하부 아키텍쳐에까지 적용 가능한 부분에는 추상 클래스가, 그렇지 못한 경우는 보통 인터페이스가 맞는 용도이고요 이로 인해 추상 클래스의 사용범위.. 더보기
인터페이스 정의(추상클래스) [출처: castello] "인터페이스를 쓰는 가장 큰 이유는 다중상속을 지원하지 않는 자바에서 다중상속의 장점을 가져오기 위해서입니다." 가 아니라. 선언과 구현의 분리를 통한 RTTI(Run Time Type Info)를 구현하기 위해서입니다. 자바 설계자들은 다중상속은 그리 중요한 요소가 아니라고 판단했습니다. 실제로 자바클래스중에서 인터페이스를 이용한 다중상속을 구현한 경우는 굉장히 드뭅니다. [출처: tkandrea92] 인터페이스는 다중상속과는 관계가 큰 관계가 없습니다. 사실 인터페이스를 구현한다고 해서, 인터페이스에 있는 것을 상속받는다는 그런 개념이 아닙니다. 인터페이스는 다른 말로 '프로토콜'이라고 하는데, 이것은 '객체가 이해할 수 있는 메시지의 집합'입니다. 사실 동적 자료형 - 실.. 더보기
힙과 스택의 개념 W.Richard Stevens 씨께서 저술한 Advanced Programming in the Unix Environment 의 7.6절은 보면 C 프로그램의 Layout에 대해 설명이 나와있습니다. 간단히 설명해 보면 /-------------------------/ 메모리상에서 | | 높은 구역 | Stack | | | /-------------------------/ | | | Heap | | | /-------------------------/ | Uninitialized data | | ---------Data---------- | | Initialized data | /-------------------------/ | | | Text | | | 메모리상에서 /-----------------.. 더보기