클래스의 설계도에 해당하는 추상클래스와 인터페이스를 비교 정리하겠습니다.

추상클래스는 여러 클래스간의 공통적인 필드와 메서드를 추출하여 만들어진 클래스입니다.

때문에 확정된 멤버도 갖고있으며 아직 정해지지않은 멤버도 있죠.

그래서 클래스 내부에 여러가지 메소드가 구현이 되는데 이때, 확정된 메서드가 있기도 하고 추상메서드가 있기도 합니다. 따라서 개발자들은 실제 클래스를 설계할때, 추상클래스를 상속받은다음 추상메소드를 오버라이딩하고 사용하게 됩니다.

반면 인터페이스는 오로지 클래스의 설계도만 있습니다. 즉 뚜렷하게 실행부가 구현된 메소드 없이, 구현해야할 메소드의 선언부만 명시되어있죠. 추상클래스와 비교하면 실행부가 구현되지않는다는 차이점이 있습니다.

정리

추상클래스와 인터페이스는 공통적으로 내부에 추상메소드를 갖고있습니다. 따라서 자기자신을 인스턴스화 해서 객체로 사용할 수 없죠. 실행부가 구현되지 않은 메소드가 있기때문에.

반면 차이점을 보자면 인터페이스는 모두가 추상메서드 즉 구현이 되지않아있는 상태이며, 추상클래스는 일부분 구현이 되어있을 수도 있습니다. 즉 추상클래스는 추상메서드와 일반메서드가 함께 공존하는 것이죠.

이런 특성은 인터페이스와 추상클래스의 목적에 따른 구분입니다. 인터페이스는 전체적인 설계도라하면 추상클래스는 구현보다는 확장에 초점을 맞추고있기 때문이죠.

상속과 구현의 차이점 및 특징, 장단점

  1. 상속 → 상속은 태생적으로부터 부모의 멤버, 메소드를 갖고있습니다.
  2. 구현(인터페이스) - 후천적인 형질로, 개발자가 직접 구현부를 작성하여 사용합니다.

장점 : 코드의 중복이 줄어들고, 메소드 오버라이드, 인터페이스 구현등 다형성을 구현할 수 있습니다.

단점 : 다중 상속을 통한 복잡성이 증대될 수 있습니다.