[Java] 추상클래스와 인터페이스
추상클래스(abstract class)
1개 이상의 추상 메소드를 가지고 있는 클래스를 추상클래스
라고 한다. 선언 시 키워드는 abstract 이다.
인터페이스(interface)
인터페이스
란 설계도, 명세라고 생각하면되는데, 모든 메소드가 추상 메소드이고, 상수만 가질 수 있다.(일반 변수 X) 이말은 즉 상속받은 클래스는 인터페이스
에 있는 모든 메소드를 강제적으로 구현해야된다는 것이다. 클래스 선언 시 Interface 키워드를 사용한다.
추상클래스와 인터페이스의 공통점과 차이점
두 기능의 공통점은 상속받은 자식이 구현을 반드시 하도록 강제한다는 점. 그리고 자기 자신이 new 를 통해 객체를 생성할 수 없으며 상속받은 자식만이 객체를 생성할 수 있다.
그리고 차이점은 사용용도라고 할 수 있다.
추상클래스
는 상속받아서 기능을 이용하고 또 상속받은 클래스에서 기능을 확장시키기 위해 사용하지만 인터페이스
는 구현 객체의 같은 동작을 보장하기 위해 사용한다.
또한 추상클래스
에서는 일반변수와 일반메서드를 선언할 수 있지만 인터페이스
에서는 상수와 추상메서드만 선언할 수 있으며 추상클래스
는 메서드의 부분적인 구현이 가능하지만 인터페이스
에서는 메서드의 선언만 가능하다.