본문 바로가기
백수/java

18. interface랑 abstract를 비교해서 설명해 주세요.

728x90
반응형

18. interface랑 abstract를 비교해서 설명해 주세요

추상 클래스(abstract)

추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스입니다.

미완성 설계도라 표현하며 상속을 위한 클래스이므로 따로 객체를 생성할 수 없습니다.

  • 추상 메서드 : 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 코드
abstract class 클래스명 {
	public abstract void 메서드명();
}

 

추상 클래스 특징

  • 추상 클래스는 인스턴스(객체)를 만들 수 없는 클래스입니다.
  • 추상 메서드는 하위 클래스에서 메서드의 구현을 강제합니다.
  • 추상 메서드를 포함하는 클래스는 반드시 추상 클래스입니다.
  • 상속하는 집합 간에 연관관계가 있습니다.
  • 다중 상속이 불가능합니다.

인터페이스(interface)

추상 클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속 이 가능합니다.

interface 인터페이스명{
	public static final 상수 = 값;
  public abstract void 메서드명();
}

인터페이스 특징

  • 모든 멤버 변수는 public static final 이어야 하며 이는 생략 가능합니다.
  • 모든 메서드는 public abstract 이어야 하며 생략 가능 합니다.
  • java 8부터는 static, default method를 사용 가능 합니다.
  • 다중 상속 가능 합니다.
  • 상속하는 집합 간에는 연관관계가 존재하지 않을 수 있습니다.

차이점

추상 클래스 인터페이스
상속하여 공통된 기능을 만들고 확장하기 위함 구현하는 객체들이 같은 동작을 보장하기 위함
다중상속 불가 다중상속 가능
생성자, 일반변수 모두 가능 생성자, 일반변수 모두 불가
메서드를 부분적으로 구현 가능 메서드 선언만 가능
extends 키워드 사용 implements 키워드 사용
728x90
반응형