5. 추상클래스와 인터페이스
2023. 9. 3. 20:43ㆍJava
추상 클래스
- 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 |