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

링딩·2023년 4월 7일
0

Computer Science

목록 보기
23/49






자바는 단 한 개의 클래스만을 상속 받는다. (인터페이스의 경우 예외임_ 다중상속...)




📕추상 클래스

◽ 정의

하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스

◽ 특징

  1. 단일 상속만 가능
  2. 추상 메소드 외에 일반 클래스처럼 일반적인 필드, 메서드, 생성자를 가질 수 있다.



📕인터페이스

◽ 정의

상수(static final)와 추상 메서드(abstract method)의 집합이다.
=> 생성자 가질 수 ❌, 객체화도 ❌

interface 인터페이스이름{
    public static final 타입 상수이름 = 값;
    public abstract 타입 메서드이름(매개변수목록);

=> public static finalpublic abstract 제어자는 생략이 가능 (컴파일 시 자동으로 추가되기에)

◽ 특징

  1. 인터페이스는 '추상화'가 추상 클래스에 보다 높다.

  2. 추상 클래스가 상속을 통해서 완성이 되는 것처럼 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.

  3. 인터페이스를 상속 받았다?

    자식 클래스에서 인터페이스가 포함하고 있는 '추상 메소드'를 구체적으로 구현해주어야 한다.

4 다중 구현(다중 상속)이 가능⭕

  1. 추상 클래스와는 다르게 '구현부'가 있는 일반 메서드, 일반 멤버 변수를 가질 수 ❌





📕 인터페이스 vs 추상클래스 사용처

인터페이스나 추상클래스나 둘이 똑같이 추상 메소드를 통해 상속/구현을 통한 메소드 강제 구현 규칙을 가지는 추상화 클래스이다.

  • 인터페이스 : implements 라는 키워드처럼 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구.현.하는 느낌

  • 추상 클래스 : extends 키워드를 사용해서 자신의 기능들을 하위 클래스로 확.장. 시키는 느낌




2. 인터페이스와 추상 클래스의 비교

추상 클래스인터페이스
사용 키워드abstractinterface
사용 가능 변수제한 없음static final (상수)
내용1입니다제어자 제한 없음 (public, private, protected, default)public
사용 가능 메소드제한 없음abstract method, default method, static method, private method
상속 키워드extendsimplements
다중 상속 가능 여부불가능가능 (클래스에 다중 구현, 인터페이스 끼리 다중 상속)


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

  1. 추상 메소드를 가지고 있어야 한다.

  2. 인스턴스화 할 수 없다 (new 생성자 사용 X)

  3. 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 한다.

  4. '인터페이스'와 '추상클래스'를 구현, 상속한 클래스는 ...
    => '추상 메소드'를 반.드.시. 구현하여야 한다
    .


+) 추상 메서드가 뭘까? 🤔

선언부만 작성하고 구현부는 작성하지 않은 채로 남겨두는 것이 추상 메서드이며,
=> 상속받는 클래스에 따라서 구현되는 내용이 달라질 수 있다.




출처

Inpa Dev 님의 글을 참고하여 작성하였습니다.
s-y-130님의 글을 참고하여 작성하였습니다.

profile
초짜 백엔드 개린이

0개의 댓글