추상클래스와 인터페이스

2019-05-11

추상클래스와 인터페이스

인터페이스란?

인터페이스는 구현 클래스가 취할 동작에 대한 설명입니다.

구현클래스는 인터페이스에 정의한 메소드들을 반드시 갖게 합니다.

기본적인 계약이나 약속을 맺은 것입니다.

즉 인터페이스의 목적구현 객체가 이 동작을 수행할 것이라는 것을 보장을 위한 것입니다.

인터페이스는 다중상속이 가능합니다.

인터페이스를 구현하는 구현클래스는 반드시 인터페이스의 메소드들을 구현해야 합니다.

추상클래스란?

추상클래스는 동작을 공유하여 반복적으로 생성 할 필요가 없는

여러 하위 클래스의 기초입니다.

예를들어 아이폰 , 갤럭시는 공통적으로 전화 문자 기능을 합니다.

그럼 추상클래스에 전화 문자 메소드를 적고 이를 상속받아 공통된 기능을 상속받음으로써

같은 코드를 두번씩이나 작성을 안해도 됩니다.

상속을 통해 공통기능을 확장시키는데에 목적이 있습니다.

또한 자바는 다중상속이 안되기 때문에 이런 점을 고려해여 사용해야 합니다.

단점으로는 '하이라키가 너무 강하다' 라고 말할 수 있습니다.

인터페이스는 구현을 강제로 해야하기 때문에, 수직구조가 2단계에서 끝나지만,

추상클래스는 또다른 자식에게 무한히 내려갈 수 있어서 코드를 많이 거슬러 올라가봐야 합니다.

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

선언만 있고 구현 내용이 없는 클래스 입니다.

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

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

추상클래스와 인터페이스의 차이점은

사용하는데에 있어 "목적" 자체가 다르다고 할 수 있습니다.