컬렉션 프레임 워크를 공부하며 다시 인터페이스 개념이 등장했다.
"컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. 이 인터페이스들은 컬렉션 클래스를 사용하는 방법을 정의한 것이다. 다음 그림은 이들 인터페이스로 사용 가능한 컬렉션 클래스(구현 클래스)를 보여준다." (혼공자 556p)
나(==바보) 는 갑자기 혼란스럽다. 의식의 흐름은 이러했다.
인터페이스 마치 리모콘 같은 것... 클래스 비슷한 개념 같았는데.. 생성자가 없었지... (클래스 구성멤버는 필드, 생성자, 메소드 / 인터페이스 구성멤버는 상수 필드, 추상 메소드)
메소드는 추상 메소드로만 선언....
구현 클래스가 필요하고... 인터페이스에서 추상 메소드로 선언되었으니까 실체 메소드 선언이 필요하고... |
어떻게든 이해해보자
1. 클래스에는 실체 / 추상 개념이 있다.
실체 클래스는 객체를 직접 생성할 수 있고, 추상 클래스는 추상 메소드가 들어가 있다.
2. 왜 추상 메소드를 사용하지? 상속의 개념!
추상 클래스가 부모가 되고, 실체 클래스가 자식이 되어서 실체 클래스는 추상 클래스의 모든 특성을 물려받을 수 있다.
그러니까 추상 클래스에서 공통된 필드와 메소드를 선언해두면
다른 점만 실체 클래스로 선언해서 나중에 실체 클래스를 작성할 때 시간 절약도 되고 이름도 통일되니까 설계시 용이하게 쓰이겠지 ( abstract class 클래스~{...} )
3. 그렇다면 인터페이스는? 얘도 역시 추상클래스처럼 다른 클래스를 작성하는 데 도움이 되는 개념인데,
클래스는 다중 상속(구현 개념)이 안 되니까 다중 상속 하려면 얘를 사용함. ( interface 인터페이스이름 { ...} )
4. 쨌든 추상 클래스 인터페이스 둘 다 비슷한 것 같은데 상속 개념에서 용도가 달라질 수 있겠군.
무엇을 사용할지는 선택의 문제!
같은 조상 클래스 ~ 기능도 같이 사용하려면 추상클래스
다른 조상 클래스지만 같은 기능이 필요하다면 인터페이스 ..! 같다 끝
>> 누군가 자세히 설명해주셨다
'Programming > Java' 카테고리의 다른 글
[JAVA 객체지향 프로그래밍] 패키지의 개념 (0) | 2021.02.21 |
---|---|
[Java 객체지향 프로그래밍] 객체와 클래스 (0) | 2021.02.21 |
[Java] 자바빈(JavaBean)에서 프로퍼티(property)와 필드(field)의 차이점? (0) | 2021.02.18 |
[Java] 자바의 예외(Exception) 처리 (0) | 2020.12.18 |
동일한 문자열 비교 : String 과 new String()의 차이 (0) | 2020.12.07 |