Post

TIL-추상 클래스(Abstract class)와 인터페이스(Interface)의 차이

2024-04-30

오늘의 학습 🌠


1

학습한 내용 🧘🏻‍♂️


  • 추상 클래스(Abstract class)와 인터페이스(Interface)의 차이
    • 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 ‘추상 메서드’가 하나 이상 포함되거나 abstract로 정의된 경우를 말함

    • 인터페이스는 모든 메서드가 추상 메서드인 경우
    • 추상 클래스와 인터페이스는 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메서드를 구현하도록 강제함.
    • 📌 그렇다면 추상 클래스 하나만 존재하면서 추상 클래스 안에 추상 메서드를 여러 개 두거나 혹은 전부 추상 메서드만 두면 되는데 왜 인터페이스가 존재할까?
    • 추상 클래스는 그 추상 클래스를 상속 받아서 기능을 이용하고 확장시키는 데 있음. 반면 인터페이스는 함수의 껍데기만 있는데 이유는 함수의 구현을 강제하기 위해서임. 구현을 강제함으로써 구현 객체의 같은 동적을 보장할 수 있음.

    • 자바는 다중 상속을 지원하지 않음. 이와 다르게 인터페이스는 여러 개의 인터페이스를 구현할 수 있음
    • 따라서 추상 클래스의 상속과 헷갈리게 되는 것. 또한 둘 다 추상 메서드를 가지고 있다는 점 때문에 인터페이스가 다중 상속의 문제점을 해결하기 위해 존재한다는 오해를 사기도 함

    • 상속은 슈퍼클래스의 기능을 이용하거나 확장하기 위해 사용되고 다중 상속의 모호성 때문에 하나만 상속 받을 수 있는 반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대해 동일한 동작을 약속하기 위해 존재

    • 인터페이스 : implements 키워드처럼 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구현하는 느낌
    • 추상 클래스 : extends 키워드를 사용해서 자신의 기능들을 하위 클래스로 확장시키는 느낌

추가 🕤


  • 하루종일 개인 과제 이슈로 인해.. 오늘은 짧게 마무리 하겠습니다. 제가 지친 걸로 보이나요..?

1

🐱‍🏍— —🤸🏻‍♀️ ~~~ 야~호~

This post is licensed under CC BY 4.0 by the author.