[정리] 추상 클래스와 인터페이스에 대해 알아보자!

Wook _·2023년 9월 14일
0

정리

목록 보기
10/13

추상 클래스와 인터페이스!

서로 헷갈리는 개념이다.

고로 간략하게 설명하지 않고 바로 각각에 대해 알아보자.


1. 추상 클래스

추상 클래스란 Class 앞에 'abstract' 키워드를 사용하여 정의하며, 하나 이상의 추상 메소드를 가지는 클래스를 말한다.
추상 메소드를 선언하여 상속을 통해서 하위 클래스에서 반드시 구현하도록 강제하는 클래스이다.

추상 클래스는 다음과 같은 특징이 있다.

  • 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스이다. 이는 new 키워드로 객체 생성이 불가능하다는 말이다.
  • 추상 클래스는 상속 키워드로 extends를 사용한다.
  • 추상 메소드는 하위 클래스에서 메소드 구현이 반드시 이루어져야 한다.
  • 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 한다.
  • 다중 상속이 불가능하다.

2. 인터페이스

인터페이스는 'interface' 키워드를 사용하여 정의하며, 오직 추상 메소드와 상수(static final)만을 가지고 있는 것을 의미한다.
추살 클래스와 마찬가지로 인터페이스 또한 인터페이스의 선언되어있는 추상 메소드를 implements 하는 클래스에서 반드시 구현하도록 강제한다.

인터페이스는 다음과 같은 특징이 있다.

  • 인터페이스의 모든 멤버 변수는 public static final 이어야 하며, 이를 생략할 수 있다.
  • 인터페이스의 모든 메소드는 public abstact 이어야 하며, 이를 생략할 수 있다.
  • Java 8 부터는 static, default method를 사용할 수 있다.
  • 인터페이스는 상속 키워드로 implements를 사용한다.
  • 다중 상속이 가능하다.

이때 Java에서는 다중 상속이 불가능한데, 이는 다중 상속의 모호성 때문이다.

간단하게 Car, Ship 클래스를 Vehicle 클래스가 상속을 했을때, Car와 Ship에 같은 메소드가 있고, Vehicle이 그 메소드를 상속하고자 할때, 어떤 클래스의 메소드를 상속할것인가!

이것이 다중 상속의 모호성이다.

하지만 인터페이스는 가능하다.

인터페이스의 경우, 모든 멤버 메소드가 추상 메소드이기 때문에 동일한 이름의 메소드를 상속 받는 클래스에서 재정의(Overriding)해서 사용해야 하기 때문이다.


추상 클래스와 인터페이스에 대해 알아보았다.

추상 클래스는 Is-A 관계, 인터페이스는 Has-A 관계이다.

끝!


출처

https://hahahoho5915.tistory.com/70

profile
책상 위에 있는 춘식이 피규어가 귀엽다.

0개의 댓글