자바 인터페이스와 추상클래스 차이

2016-09-12

정의

  1. 추상클래스 - 클래스 내 ‘추상메소드’가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다. 일반적인 클래스는 구체적이며 단순하다. ex) 사자, 독수리 등 추상 클래스는 일반 클래스에비해 구체적이지 않고 약간 추상적이다. ex) 포유류, 조류 등 추상클래스는 반드시 하나 이상의 추상메소드를 가지고 있으며, 객체를 생성할 수 없다. 하지만 슈퍼클래스 로 사용 가능하며, 추상메소드를 사용하기 위해서는 반드시 해당 메소드를 재정의 해야 한다.

    추상클래스나 추상메소드를 선언하기 위해서는 이름 앞에 abstract를 선언해주면 된다. 추상메소드 - 내용이 없는 비어있는 메소드, 추상메소드는 슈퍼클래스의 용도로 쓰이며 일반메소드도 포함될 수 있으며 반드시 추상메소드로 구현해야한다.

  2. 인터페이스 - 모든 메소드가 ‘추상메소드인 경우 추상클래스의 극단적인 경우 인터페이스는 추상메소들로만 이루어져 있으며, 메소드의 선언만 가능하다 (슈퍼클래스X) 인터페이스의 메소드는 표준화된 기능을 가지고있다. 인터페이스를 사용하기 위해서는 implement를 사용 인터페이스는 서로 다른 클래스를 연결시켜주는 고리같은 역할

  3. 다형성 -

사용하는 방법은 다르지만 하는일은 비슷

차이점

추상클래스와 인터페이스는 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상메소드를 구현하도록 강제한다.

인터페이스와 추상클래스의 존재 목적이 다름

  1. 추상클래스 - 추상클래스는 그 추상클래스를 상속받아 기능을 이용하고, 확장시키는게 목적. 함수의 구현을 강제하기 위함
  2. 인터페이스 - 구현 객체의 같은 동작을 보장하는것이 목적

이유는 다중상속을 지원하지 않기 때문!

참고 -https://brunch.co.kr/@kd4/6, http://enter.tistory.com/122