Gidhub BE Developer

인터페이스(Interface) 와 추상 클래스(Abstract class)

2018-11-14
goodGid

인터페이스(Interface)와 추상 클래스(Abstract class)

공통점

  • 추상 클래스와 인터페이스는 선언만 있고 구현 내용이 없는 클래스다.

  • 따라서 인터페이스와 추상 클래스를 가지고 새로운 인스턴스(객체)를 생성할 수 없다.

  • 추상 클래스를 extends로 상속받아 구현한 자식 클래스나

  • 인터페이스를 implements하고 구현한 자식 클래스만이 객체를 생성할 수 있다.


차이점

추상 클래스

  • 추상 클래스는 추상 메소드(abstract method)가 하나라도 존재하는 클래스를 말한다.

  • 즉 일부는 구현된 메서드도 있을 수 있고

  • 일부는 abstract method인 메서드도 있을 수 있다.


  • 여기서 포인트는 추상 클래스를 언제 사용해야하가?이다.

  • 인터페이스와 추상 클래스를 단순하게 자식 클래스에서 반드시 구현하게 위임시키는 것만 생각하면 비슷하지만 용도를 봤을 때 다르다.

  • 추상 클래스는 말 그대로 추상화 시킬 때 사용하면 된다.

  • 책에서 보는 is-a 관계가 핵심이다.

  • 쉽게 말해 여러 클래스들의 공통점을 찾아 추상화시켜서 사용하는 것이 개발에서 이득일 때 사용한다.

  • 예를들면 냉장고, TV, 커피머신, 전자렌지등의 클래스를 만들어야할 일이 있을 때

  • 가전 제품이라는 추상 클래스로 추상화 시켜서 사용하면 좋을 때 사용한다.

  • 가전 제품 공통적으로 on(), off(), 전기소모(), 기타등 사용되는 메서드들을 적고

  • 가전 제품별로 동작()을 나눠서 냉장고는 차갑게하고 전자렌지는 물분자운동을 시키는 구조다.

  • (냉장고 is a 가전제품, 커피머신 is a 가전제품, 전자렌지 is a 가전제품)


  • 상속 받아서 기능을 확장시키는데 목적, 전형적인 상속의 목적

  • 또한 자바특성상 다중상속이 불가한 점을 고려해서 사용해야한다.

  • 요약하면 다중상속 불가, 멤버 변수 존재 가능, 구현된 메서드 존재 가능이다.


인터페이스

  • 인터페이스는 implements하는 모든 클래스에 대해 특정한 메서드를 반드시 정의하도록 강제하는 역할이다.

  • 구현 객체가 같은 동작을 한다는 것을 보장하기 위한 목적이다.

  • 클래스가 아니기 때문에 인터페이스는 다중 상속이 가능하다.

  • interface도 is-a 관계다.


Reference


Recommend

Index