[Java] 인터페이스와 추상 클래스

gyeol·2025년 9월 27일
0

자바

목록 보기
18/23
post-thumbnail

추상 클래스

추상 클래스는 클래스지만, 이를 기반으로 인스턴스 생성이 불가능하며 하나 이상의 추상 메서드를 포함할 수 있는 클래스이다. 오직 상속을 통해 하위 클래스에서만 완성될 수 있다.

추상화?
공통적인 속성과 기능을 정의함으로써 코드 중복을 줄이고 클래스 간 관계를 효과적으로 설정하고 유지/보수를 용이하게 하는 것

하지만, 클래스 역할을 하지 못하는 추상 클래스를 사용하는 이유는 무엇일까?
새로운 클래스를 작성하는데 바탕이 되어주기 때문이다. 추상클래스라는 틀에서 공통적인 기능을 공유하는 클래스들 간의 공통 로직을 제공함으로써 확장이 편리하며 유연함을 가져주기 때문이다.

사용법

abstract class test{
...
}

abstract 키워드를 사용해 추상 클래스를 정의하며 위와 같이 클래스 선언부가 작성되어 있으면 미완성 추상 클래스이므로 상속을 통해 내부의 추상 메서드를 구현해줘야 한다.
또한, 구현된 메서드와 구현되지 않은 추상 메서드를 함께 가질 수 있다.

인터페이스

인터페이스는 모든 메서드가 추상 메서드인 경우이며 함수의 구현을 강제하기 위해 사용된다. interface 키워드를 통해 구현하며 오직 추상 메서드와 상수로만 이루어진다.

  • 인터페이스 내부의 모든 메서드는 public abstract여야 함 -> 생략 가능
  • 인터페이스 내부 필드는 public static final로 정의되나 키워드 생략 가능
  • 인터페이스를 implements하는 일반 클래스는 모든 메서드를 반드시 구현해야 함
  • 구현하지 않을 시, 그 클래스는 추상 클래스로 선언
  • 여러 개의 인터페이스로부터 다중 상속 가능

사용법

class 클래스명 implements 인터페이스명{
	추상메서드 구현
}

만약 구현하는 인터페이스 메서드 중 일부만 구현할 시, abstract 키워드를 사용해 추상 클래스로 선언해야 한다.

abstract class 클래스명 implements 인터페이스명{
	추상메서드 구현
}

추상 클래스 vs 인터페이스

구분추상 클래스인터페이스
목적여러 클래스가 공통으로 사용할 기능을 미리 구현하고 필요한 부분만 자식 클래스에서 완성하도록 제공클래스들이 반드시 구현해야 할 메서드 목록을 정의해 동일한 동작 방식 강제
상속/구현단일 상속다중 상속
구성 요소추상 메서드+일반 메서드+멤버 변수+생성자 모두 포함 가능추상 메서드, default/static 메서드, 상수만 포함
멤버 변수인스턴스 변수, 상수 모두 가능상수(public static final)만 선언 가능
메서드 구현일부 메서드 미리 구현 가능구현 불가
생성자존재존재 X
profile
공부 기록 공간 '◡'

0개의 댓글