Programming/Java

[Java] 추상클래스 vs 인터페이스 차이?

joah.k 2020. 12. 4. 14:06
728x90

컬렉션 프레임 워크를 공부하며 다시 인터페이스 개념이 등장했다. 

 

"컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. 이 인터페이스들은 컬렉션 클래스를 사용하는 방법을 정의한 것이다. 다음 그림은 이들 인터페이스로 사용 가능한 컬렉션 클래스(구현 클래스)를 보여준다." (혼공자 556p)

 

 

나(==바보) 는 갑자기 혼란스럽다. 의식의 흐름은 이러했다. 

인터페이스 마치 리모콘 같은 것... 클래스 비슷한 개념 같았는데.. 생성자가 없었지...

(클래스 구성멤버는 필드, 생성자, 메소드 / 인터페이스 구성멤버는 상수 필드, 추상 메소드) 

 

메소드는 추상 메소드로만 선언....

 

구현 클래스가 필요하고... 인터페이스에서 추상 메소드로 선언되었으니까 실체 메소드 선언이 필요하고...
( public class 구현클래스이름 implements 인터페이스이름 { } )


추상.... 음 그럼 추상 클래스도 있는데 얘는 뭐였더라? 인터페이스랑 추상 클래스랑 무슨 차이지? 어떨 때 사용하지? 

 

어떻게든 이해해보자 

 

1. 클래스에는 실체 / 추상 개념이 있다.

실체 클래스는 객체를 직접 생성할 수 있고, 추상 클래스는 추상 메소드가 들어가 있다. 

 

2. 왜 추상 메소드를 사용하지? 상속의 개념!  

추상 클래스가 부모가 되고, 실체 클래스가 자식이 되어서 실체 클래스는 추상 클래스의 모든 특성을 물려받을 수 있다. 

그러니까 추상 클래스에서 공통된 필드와 메소드를 선언해두면

다른 점만 실체 클래스로 선언해서 나중에 실체 클래스를 작성할 때 시간 절약도 되고 이름도 통일되니까 설계시 용이하게 쓰이겠지 ( abstract class 클래스~{...} ) 

 

3. 그렇다면 인터페이스는? 얘도 역시 추상클래스처럼 다른 클래스를 작성하는 데 도움이 되는 개념인데, 

클래스는 다중 상속(구현 개념)이 안 되니까 다중 상속 하려면 얘를 사용함.  ( interface 인터페이스이름 { ...}  )

 

4. 쨌든 추상 클래스 인터페이스 둘 다 비슷한 것 같은데 상속 개념에서 용도가 달라질 수 있겠군. 

무엇을 사용할지는 선택의 문제! 

같은 조상 클래스 ~ 기능도 같이 사용하려면 추상클래스 

다른 조상 클래스지만 같은 기능이 필요하다면 인터페이스 ..! 같다 끝 

 

 

>> 누군가 자세히 설명해주셨다 

myjamong.tistory.com/150

 

728x90