추상화 - 추상클래스 vs 인터페이스

Moon·2024년 2월 24일

Java

목록 보기
15/45

추상 클래스

extends
ㄴ하나만 상속(확장) 가능

  • 생성자를 정의할 수 있음.
  • 단독으로 인스턴스 생성할 수 없음. (상속받아야만 사용 가능)
  • 변수: 인스턴스 변수 / static 변수를 선언할 수 있음.
  • 추상 메소드도 접근제어자 다양
  • 내용의 정의된 메소드 가능.
  • 추상 메소드에는 abstract 키워드를 선언해야 함.
  • abstract 메소드는 private 지시자를 선언할 수 없음. (오버라이드 때문)
  • abstract 메소드는 규격만 선언함.
  • 상속(확장)받는 클래스는
    - abstract 메소드를 반드시 오버라이드해야 함.
    - abstract 메소드를 반드시 구현해야 함.

일반 클래스와의 차이점

  • 인스턴스를 생성할 수 없음.
  • 추상메소드를 선언할 수 있음.

인터페이스

implements
ㄴ여러개의 인터페이스 의존 가능
ㄴ상속/확장보다는 메소드를 구현해야 하는 규약으로 많이 쓰므로 생성자를 정의할 수 없음.
ㄴ현업에서 추상 클래스보다 많이 씀.

  • 생성자를 정의할 수 없음.
  • 단독으로 인스턴스 생성할 수 없음.
  • 변수:
    - 인스턴스 변수를 선언할 수 없음.
    - 무조건 public static final임.
  • 추상 메소드는 public 고정.
  • 내용이 정의된 메소드는 public default void로 고정.
  • 정적 메소드도 public static 으로 고정.
  • 메소드:
    - default / static 이 아닌 메소드는 모두 public abstract 임.
    - default / static 메소드는 모두 public 임.
  • 구현하는 클래스는
    - abstract 메소드를 반드시 오버라이드 해야 함.
    - abstract 메소드를 반드시 구현해야 함.

추상클래스와 인터페이스를 동시에 쓸 수 있음.

interface의 메소드 종류

  • public abstract method()
  • public default method() -> default method()
  • public static method() -> static method()

0개의 댓글