인터페이스, 추상클래스

bird.j·2021년 4월 1일
0

java

목록 보기
7/10

인터페이스와 추상클래스는 추상 메서드를 가지고, 객체 생성이 불가능하다는 공통점이 있다.
언뜻 동일해 보이기 때문에 그 둘을 알아보고 차이점도 정리해보자.

💡 인터페이스(interface)


클래스와 달리 객체를 생성할 수 없고 메소드만 존재한다. (설계도, 껍데기에 비유할 수 있다)

그렇다면 인터페이스를 사용하는 이유는 무엇일까?
인터페이스를 사용함으로써 객체가 다양한 자료형을 가질 수 있기 때문이다. (oop의 다형성) 이것이 무엇에 좋냐하면,
하나의 규약같은 개념이기 때문에 협업에 필수적이고, 큰 프로젝트일수록 또는 개발 인원이 많을 경우 인터페이스를 통해 많은 이점을 얻게 된다고 한다.

class대신 interface키워드를 사용하고 extends대신 implements키워드를 사용한다.



💡 추상클래스(abstract)


클래스의 공통된 부분을 뽑아서 별도의 클래스(추상클래스)로 만들어놓고 이것을 상속해서 사용한다.
상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스로 상속을 위한 클래스라고 말할 수 있다.
그렇기 때문에 따로 객체를 생성할 필요가 없다.

🎈 추상클래스의 특징

  • 멤버 변수를 가진다
  • abstract클래스를 상속하기 위해서는 extends이용
  • abstract메서드를 가지며 상속한 클래스에서 반드시 구현해야함
  • 일반 메서드도 가질 수 있다.
  • 일반 클래스와 마찬가지로 생성자도 존재


그렇다면 이 둘의 차이점은 무엇일까?

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

  • 인터페이스는 멤버 변수를 가질 수 없지만 추상클래스는 일반 메소드, 일반 변수 모두 가질 수 있다.
  • 추상클래스는 상속과 더 가깝고 인터페이스는 다형성과 더 가깝다.


    📌 즉, 상속은 슈퍼클래스의 기능을 이용하거나 확장하기 위해서 사용하지만, 인터페이스는 해당 인터페이스를 구현한 객체들에 대해 동일한 동작을 약속하기 위해 존재한다.

참고 | 자바의 추상클래스와 인터페이스
참고 | 추상클래스 vs 인터페이스
참고 | 추상클래스, 인터페이스 왜 사용할까?
참고 | 자바 인프런 강의자료

0개의 댓글