🎟인터페이스와 🖼추상클래스의 차이점에 대해 설명해주세요

     

    키워드

    • 추상 메소드란?
    • 🖼추상 클래스란?
    • 🎟 인터페이스란?
    • 🖼추상 클래스와 🎟 인터페이스의 공통점
    • 왜 굳이 🎟 인터페이스를 사용할까?
    • 🖼인터페이스와 🎟 추상 클래스 언제 사용할까?

     

     

    추상 메소드란?

    선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상 메소드입니다.
    머리만 있고 꼬리(내용)는 없는 메소드라고 생각하면 됩니다.

    🖼 추상 클래스란?

    추상 클래스와 일반 클래스는 상속 관계에 놓여있습니다. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용됩니다. 일반 클래스들의 필드와 메소드를 통일하여 일반 클래스 작성 시 시간을 절약할 수 있습니다. 추상 클래스는 단일 상속만 가능하며, 일반 변수를 가질 수 있습니다.

     

    🎟 인터페이스란?

    추상 클래스의 하나로, 추상 메소드로만 이루어진 클래스입니다. 추상 클래스보다 한 단계 더 추상화된 클래스라고 할 수 있습니다. 추상 클래스와는 달리 구현부를 갖춘(몸통을 갖춘) 일반 메소드, 멤버 변수를 구성원으로 가질 수 없습니다. 모든 멤버 변수는 public static final로 선언해야 하고, 이를 생략할 수 있습니다. 다중 상속이 가능합니다.

    * 자바 8버전부터 default 예약어를 통해 일반 메서드 구현이 가능해졌습니다😀


    public static final을 사용하는 이유는?

    더보기

    구현 객체의 같은 동작을 보장하기 위한 목적(값을 추가하는 것이 불가능)

    인터페이스 변수는 스스로 초기화될 권한이 없음

    아무 인스턴스도 존재하지 않는 시점이기 때문입니다.

     

    인터페이스와 추상 클래스의 공통점

    인터페이스와 추상 클래스 모두 가지고 있는 추상 메소드를 구현하도록 강제합니다. 또한 인스턴스화(new 연산자를 통한 객체생성)가 불가능합니다. ( 😏 인스턴스화는 자식 클래스에서만 가능해요!)

    왜 굳이 인터페이스를 사용할까?

    바로 다중 상속 때문입니다. 자바에서는 다중 상속을 지원하지 않기 때문에, 여러 개의 추상 클래스를 상속 받을 수 없어요. 하지만, 인터페이스를 구현하는 클래스는 다른 여러개 인터페이스를 함께 구현할 수 있습니다.
    ( interface의 또 다른 예시는 "자격증"이라고 합니다. 한 명이 여러 개의 자격증을 취득할 수 있는 것처럼요!)


    예를 들어 설명해보겠습니다.


    생물은 구분에 따라 동물과 식물을 상속하며, 동물을 상속받는 고양이, 식물을 상속받는 장미와 소나무로 구분됩니다. 나 - 고양이 - 장미 - 소나무 모두 부모 클래스를 다르지만 "먹다"라는 행위는 동일하기 때문에 interface를 사용하여 같은 동작을 보장하였습니다. 또한 interface는 다중 상속이 가능하기 때문에, '나'라는 클래스는 개발자, 먹다, 수영하다. 등의 interface를 상속받을 수 있는 것입니다.

    추상 클래스를 언제 사용할까?

    상속 관계를 타고 올라가서 같은 부모 클래스를 상속하는데 부모 클래스가 가진 기능을 구현해야 하는 경우
    동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아 기능을 확장시키는 것이 목적입니다.

    인터페이스는 언제 사용할까?

    상속 관계를 타고 올라가서 다른 부모 클래스를 상속하더라도, 같은 기능이 필요한 경우에 사용해요.
    (먹다, 날다 등)구현 객체가 같은 동작을 한다는 것을 보장하는 것이 목적입니다.


    😜 추상 클래스누구한테 상속받는지 중요할 때, 인터페이스어떤 행위를 상속받을지 중요할 때!


    즉, 인터페이스와 추상 클래스의 차이점에 대한 질문은 상속과 다형성의 개념을 잘 이해했는지를 판단하는 질문이기도 해요.

     

     


     

    참고 영상

     

    참고 블로그

     

     

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

    [Java] 내가 이해한 추상 클래스와 인터페이스의 차이 정리 👀

    velog.io

     

     

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

    인터페이스와 추상클래스의 차이를 알아보자 ! 설명 : 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경

    uzleem.tistory.com

     

     

    [JAVA] 자바 인터페이스란?(Interface)_이 글 하나로 박살내자

    1. 인터페이스 개념과 역할 인터페이스....이 글하나로 박살내자. (회사에서 존댓말을 많이 쓰기때문에 여기서라도 반말로 글을 써보고 싶음 ㅎ) 인터페이스는 뭘까?? 결론부터 말하면, 극단적으

    limkydev.tistory.com

     

     

    인터페이스(interface)와 추상 클래스(abstract class)

    인터페이스와 추상 클래스는 무엇이고 그 차이는 무엇일까?

    loustler.io

     

    728x90

    댓글