[Java] 추상클래스와 인터페이스

최대 1 분 소요

추상클래스(abstract class)

1개 이상의 추상 메소드를 가지고 있는 클래스를 추상클래스 라고 한다. 선언 시 키워드는 abstract 이다.


인터페이스(interface)

인터페이스란 설계도, 명세라고 생각하면되는데, 모든 메소드가 추상 메소드이고, 상수만 가질 수 있다.(일반 변수 X) 이말은 즉 상속받은 클래스는 인터페이스에 있는 모든 메소드를 강제적으로 구현해야된다는 것이다. 클래스 선언 시 Interface 키워드를 사용한다.



추상클래스와 인터페이스의 공통점과 차이점

두 기능의 공통점은 상속받은 자식이 구현을 반드시 하도록 강제한다는 점. 그리고 자기 자신이 new 를 통해 객체를 생성할 수 없으며 상속받은 자식만이 객체를 생성할 수 있다. 그리고 차이점은 사용용도라고 할 수 있다. 추상클래스는 상속받아서 기능을 이용하고 또 상속받은 클래스에서 기능을 확장시키기 위해 사용하지만 인터페이스는 구현 객체의 같은 동작을 보장하기 위해 사용한다. 또한 추상클래스에서는 일반변수와 일반메서드를 선언할 수 있지만 인터페이스에서는 상수와 추상메서드만 선언할 수 있으며 추상클래스는 메서드의 부분적인 구현이 가능하지만 인터페이스에서는 메서드의 선언만 가능하다.