본문 바로가기
App hacking

[Java] abstract class와 interface 차이

by m_.9m 2022. 7. 3.
 

 

 

90% 참고

abstract class(추상 클래스)는 새로운 class를 작성하는 데 있어 부모 클래스로서 중요한 의미를 갖는다,

혹은 공유의 목적으로 abstract class를 만드는 경우도 있는데, 추상 클래스는 여러 기존의 클래스에서 공통된 부분을 추상화 한 것으로 공통된 부분을 따로 뽑아낸 것이라고 할 수 있다.

 

추상 클래스의 목적은 기존의 클래스에서 공통된 부분을 추상화하여 상속하는 클래스에게 구현을 강제화, 메서드의 동작을 구현하는 자식 클래스로 책임을 위임, 공유의 목적

 

interface는 일종의 추상클래스로 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제한다. 인터페이스는 하나의 설계도 같은 느낌으로 다음과 같은 제약 사항이 있다. 

 

- 모든 멤버 변수는 public static final이어야한다. 단, 이를 생략할 수 있다.

- 모든 메서드는 public abstract여야한다. 단, 이를 생략할 수 있다.

  static 메서드와 default 메서드는 제외한다.

 

인터페이스도 상속이 가능하지만 인터페이스끼리만 가능하다. 인터페이스는 구현되어야하며 상속의 extends와 달리 implements 키워드를 사용한다. 

 

claa Class implements interface

 

이렇게 말이다. 또 다른 점이 있는데 자바에서 상속은 1번 밖에 하지못하지만 인터페이스를 이용하면 다중 상속과 비슷하게 된다. 인터페이스는 다중 구현을 할 수 있다.

 

class Class inplements interface1, interface2

 

- 인터페이스: 클래스가 아니다. 서로 관련이 없는 클래스에서 공통적으로 사용하는 방식이 필요하지만 기능을 각각 구현할 경우 사용. 구현 객체의 같은 동작을 보장하기 위한 목적. 

- 추상 클래스: 클래스다. 주로 베이스 클래스로 사용. 상속받아서 기능을 확장시키는 용도로 사용.