HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
🚆
인터페이스와 추상클래스
🚆

인터페이스와 추상클래스

Person
완료율%
상태
작성중
나의 블로그
Think Sharing (TS)
🪚
인터페이스와 추상클래스

추상 클래스

  • 미완성 설계도

추상 메서드란?

  • 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 메서드
  • 상속받는 클래스에 따라 달라 질 수 있다.

규칙

  • 추상 클래스는 abstract를 붙여 표현
    • 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여서 추상 클래스로 지정 가능
  • 추상 클래스는 new 를 통해 객체 생성 불가능
  • 추상 케서드는 inteface와 같이 구현 부분은 없다.
  • 추상 메서드는 자식 클래스에서 반드시 구현해야 한다. (오버라이딩)
  • 추상 메서드가 하나 이상인 경우, 반드시 클래스에 abstract 키워드를 추가해야 한다.

인터페이스

  • 기본 설계도

규칙

  • 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없다.
  • 모든 멤버 변수는 public static final 이어야 하며, 생략 가능
    • 인터페이스 변수는 아무 인스턴스도 존재하지 않는 시점이기 때문에 스스로 초기화할 권한 없음 → public static final를 사용해 구현 객체의 같은 상태를 보장
  • 모든 메서드는 public abstract 이어야 하며, 생략 가능 (JDK 1.8 부터 static 메서드와 default 메서드 사용 가능)
  • 다중 상속이 가능하다.

인터페이스 vs 추상 클래스

차이점

  • 결합의 정도
    • 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다. 자바는 단일 상속만 지원 → 새로운 타입을 정의하는데 커다란 제약을 가진다.

When to use 추상 클래스?

  • 관련성 높은 클래스 간에 코드를 공유하고 싶은 경우
  • 추상 클래스를 상속 받을 클래스들이 공통으로 가지는 메서드와 필드가 많거나, public 이외의 접근자 (protected, private) 선언이 필요한 경우
  • non-static, non-final 필드 선언이 필요한 경우 (각 인스턴스에서 상태 변경을 위한 메서드가 필요한 경우)

When to use 인터페이스?

  • 서로 관련성 없는 클래스들이 인터페이스를 구현하게 되는 경우
  • 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지 신경쓰지 않는 경우
  • 다중 상속을 허용하고 싶은 경우
 
ㅤ
추상 클래스
인터페이스
변수
일반 클래스와 동일
(public static final) 상속
메서드
일반 클래스와 동일 단, abstract 메서드는 무조건 1개 이상
추상 메서드, default/static 메서드(jdk 1.8부터)
메서드 접근제어자
public, protected, default(생략 가능)
public만(생략 가능)
생성자
O
X
A {?} B
extends / 상속 (is-a)
implements / 구현 (has-a)
다중상속
불가능
가능
 

🔖 참고 사이트

Can we define an abstract class without abstract method in java?
A method which does not have body is known as abstract method. It contains only method signature with a semi colon and, an abstract keyword before it. public abstract myMethod(); To use an abstract method, you need to inherit it by extending its class and provide implementation to it.
Can we define an abstract class without abstract method in java?
https://www.tutorialspoint.com/can-we-define-an-abstract-class-without-abstract-method-in-java
Can we define an abstract class without abstract method in java?
인터페이스 Interface vs 추상클래스 abstract class
추상화 정도가 높은 일종의 추상클래스. 추상클래스처럼 추상 메서드를 갖지만 추상클래스보다 추상화정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. *인터페이스: 구현된 것은 아무것도 없고 밑그림만 그려진 '기본 설계도' (like 작업지시서) why? 인터페이스를 사용하는가?
인터페이스 Interface vs 추상클래스 abstract class
https://cheershennah.tistory.com/56
인터페이스 Interface vs 추상클래스 abstract class