[개발] abstract Class VS Interface
abstract Class VS Interface
- “상속”과 “다형성”
공통점
- abstract class와 interface는
상속받는 클래스
혹은구현하는 인터페이스
안에 있는 추상 메소드를 구현하도록 강제한다.
차이점
-
Abstract Class
- 추상 클래스는 상속받아서 기능을 이용하고, 확장시키는 데 있음
- 특징
- abstract Method 없거나 하나 이상
- abstract Method(구현되어 있지 않음) -> abstract로 정의된 메소드
- abstract로 정의된 메소드는 상속받은 class에서 구현이 필요함
- 단 abstract class에서 상속받을 경우 모두 구현할 필요없다
- extends
- 추상클래스가 추상클래스로 상속가능!
- 단일상속
-
Interface
-
함수의 껍데기만 있는데, 그 이유는 그 함수의 구현을 강제하기 위해서 임
- 구현을 강제함으로써 구현 객체의 같은 동작을 보장할 수 있음
- 특징
- 안이 비어있는 메소드 형태
- 상속시 구현 필요
- 모든 메소드들은 추상클래스
- 인터페이스들끼리 상속은 extends
- implements
- 모든 변수는 상수(static final)
- 모든 메소드는 추상메소드(abstract Method)
- 다중상속 (,)기준
-
어떤 상황에 사용하는게 좋을까?
- 추상클래스
- 같은 종류나 행동들을 구현할 것이 많을 때
- 상속에 대한 계층구조를 명확히 표현할 때 효과적
- 일반 변수, 일반 메소드 사용가능
- 인터페이스
- 디자인을 구성하는 요소들이 자주 바뀔 때 유용
- 메소드 형태만 서로 공유해서 구현되는 상황
- 협업 개발시 효과적