본문 바로가기

프로그래밍 /JAVA

[JAVA] 인터페이스 & 추상클래스 차이점!!

추상클래스(abstract)란!!


클래스가 설계도 라면 추상클래스는 '미완성 설계도'


 추상메서드 (미완성메서드)를  포함하고 있는 클래스


 *.* 추상메서드 : 선언부만 있고 구현부( 몸통, body) 가 없는 클래스


꼭 필요하지만 자손마다 다르게 구현 될 것으로 예상되는 경우에 사용


추상 클래스를 상속받는 자손 클래스에서 추상메서드의 구현부를 완성




인터페이스(Interface)란!! 


일종의 추상클래스.  추상클래스(미완성 설계도) 보다 추상화가 높다.


실제 구현된 것이 전혀없는 기본설계도(알맹이 없는 껍데기)


인스턴스를 생성할 수 없고 클래스 작성에 도움을 줄 목적으로 사용된다.


class 대신 interface 를 사용할 뿐 클래스를 상속받는것과 같다 







차이점!!!!


->추상클래스(abstract)

추상메서드(abstract method)가 하나라도 존재하는 클래스.

추상화 시킬 때만 사용하면 된다.

(is-a관계)

(공통점을 찾아서 추상화시켜서 사용하는 것)


클래스 임으로 단일상속(다중상속 불가)

=>상속을 받아서 기능을 확장시키는 목적, (상속) 


구현 할때 extends 상속



 ->인터페이스(Interface)  진정 완전한 껍데기

     interfaces는 구현하는 모든 클래스에 특정한 메서드가 반드시 존재하게 하는 강제적인 역할 


.-.구현 객체가 동작을 한다는 것을 보장 목적

(has a) 관계 즉 다중상속 가능


implements 상속

(인터페이스는 상관없는 클래스를 연결 해주는 중간 역할이라고 생각하자)