5. 추상클래스와 인터페이스

2023. 9. 3. 20:43Java

추상 클래스

- abstract 키워드를 포함하며, 하나 이상의 추상 메소드를 가진 클래스

public abstract class Class {
    public abstract void abstractMethod();
}
  • 추상 메소드가 포함된 클래스는 반드시 추상 클래스가 된다.
  • 추상 메소드는 상속을 통해 자식 클래스에서 반드시 구현되어야 한다.
  • 추상 클래스는 상속을 위한 클래스이므로 인스턴스화 될 수 없다.
  • 추상 클래스를 상속  받는 자식 클래스가 인스턴스가 된다.

 

 

추상 메소드란,

메소드가 구현되지 않고 선언만 되어있는 메소드로 상속받는 클래스에 따라 구현부가 달라진다.

 

 

인터페이스

- inaterface 키워드를 포함하며, 추상 메소드와 상수만을 가짐

(JDK 1.8부터 static 메소드와 default 메소드 사용 가능 - 오버라이딩 필수x)

interface Class {
    public static final int value;
    public abstract void interfaceAbstract();

    public default void interfaceDefault() {
    };
}
  • 인터페이스 모든 필드는 public static final이고, 모든 메소드는 public abstract 이어야함.
  • 인터페이스에서는 전체적인 틀을 짜고, 실제 구현 클래스에서 메소드 내용 부분을 채워넣어 구현한다.

 

  추상클래스 인터페이스
공통점 메소드의 선언만 있고 구현부는 없다
new 연산자를 통해 객체 생성할 수 없다.
상속받은 클래스가 추상 메소드를 반드시 구현해야한다.
선언부 abstract interface
자식 클래스 키워드 extends (상속) implements (구현)
내부 메소드 일반, 추상 메소드 모두 가능 추상, default, static 메소드만 가능
다중 상속 불가 가능

=> 추상클래스는 상속받는 클래스가 반드시 구현 해야하는 메소드와 하지않아도 되는 메소드로 이루어진다.

=> 반면, 인터페이스는 모든 메소드를 하위 클래스에서 구현해야한다.

* 인터페이스를 왜 사용하는가?

1. 협업 시 유리하다.

동시에 작업할 떄, 다른 개발자가 구현하고 있는 클래스가 완성되지 않아도

먼저 작성해놓은 인터페이스 형식에 맞춰 구현하여 개발 일정에 차질이 생기지 않을 수 있다.

 

2. 유지 보수가 편하다.

구현된 메소드는 동일한 인터페이스에 맞춰 구현되었기 때문에 수정이 용이하다.

( 느슨하다, 결합도가 낮다 - 구체적인 구현부가 없기때문에 )

(결합도 낮추고 응집도를 높힌다.)

'Java' 카테고리의 다른 글

10. 예외처리와 enum  (0) 2023.09.10
9. 컬렉션 프레임 워크와 제네릭  (0) 2023.09.04
8. 익명 클래스와 람다식  (0) 2023.09.04
7. 자바 리플렉션 (Reflection)  (0) 2023.09.04
6. 불변 객체 (Immutable Object) & Final  (0) 2023.09.03