HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
인터페이스와 추상클래스

인터페이스와 추상클래스

Person
완료율%
상태
완료
나의 블로그
Think Sharing (TS)
🪚
인터페이스와 추상클래스

인터페이스 VS 추상클래스

인터페이스와 추상클래스를 비교해보겠습니다.
 

인터페이스

  • 모든 멤버 변수는 public static final 이어야합니다. 생략 가능합니다.
    • notion image
  • 기본적으로 메서드는 추상 메서드입니다. (인터페이스 내부에서 구현할 수 없습니다.)
    • notion image
  • Java 8 부터 static, default method를 사용할 수 있습니다. (상속 시 오버라이딩 할 수 있습니다.)
    • notion image
 
  • 다중 상속이 가능합니다
    • notion image
    • 다중 상속중에 같은 default method가 있다면 무조건 오버라이딩 해야합니다.(Compile 오류 발생)
      •  
  • 상속하는 집합간에 연관 관계가 존재하지 않을 수 있습니다.
    • notion image
      notion image
       

추상 클래스

  • 클래스에 abstract 키워드를 붙여 사용합니다.
    • notion image
 
  • 인스턴스를 만들 수 없습니다.
notion image
  • 최소 0개의 추상 메서드를 포함해야합니다.(구현이 없는 메서드)
  • 추상 메서드를 포함하면 반드시 클래스도 추상 클래스여야 합니다.
    • notion image
  • 인터페이스와는 다르게 다중 상속이 불가능합니다.
 

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

인터페이스는 각기 다른 클래스를 상속하면서 공통적인 기능을 가질때 사용할 수 있습니다.
 
곤충과 조류는 생명체입니다.
잠자리는 곤충이면서 날 수 있습니다. 하지만 애벌레는 곤충이지만 날지 못합니다.
참새는 조류입니다. 잠자리와 참새는 각각 곤충과 조류로 다르지만 둘은 모두 날 수 있습니다.
이 경우에 곤충과 조류의 상위 클래스인 생명체에게 “날기” 라는 추상 메서드를 추가할 순 없습니다. 애벌레가 날 수 없기 때문이죠. 이럴 때 Flyable 인터페이스를 사용할 수 있습니다.
 
notion image
 
그래서 인터페이스는 보통 is able to로 표현됩니다.
잠자리 is able to fly, 참새 is able to fly
 
추상 클래스는 is a 또는 is kind of 관계로 해석할 수 있습니다.
“고래은 포유류다”
“아파트는 집이다”
notion image
notion image