공부 기록/개념정리

[객체 지향] JAVA _ interface , abstract

코딩걈자 2024. 4. 19. 19:32

interface

  • interface 키워드 사용
  • static final 변수 사용 가능 => 내부의 모든 필드는 public static final 상수, 모든 메소드는 추상 메소드
  • public 접근제어자 사용 가능
  • 상속 키워드 : implements
  • 다중 상속 가능 => 클래스에 다중 구현 지원, 인터페이스끼리는 다중 상속 지원
  • 내부의 모든 메서드는 public abstract로 정의 (defalut 메소드 제외)
  • 공통 기능이 필요할 때 마다 추상 메서드를 정의해놓고 구현하는 식 => 각 클래스의 목적에 맞게 기능을 구현
  • 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용
  • 객체간의 결합도를 낮춤

abstract

  • abstract 키워드 사용, 하나 이상의 추상 메소드를 갖고 있는 클래스
  • 변수, 접근제어자,메소드 사용 제한 없음 => 추상 메소드 외에 일반 클래스와 같이 일반적은 필드, 메소드, 생성자를 가질 수 있음
  • 상속 키워드 : extends
  • 다중 상속 불가능
  • 하위클래스들의 공통점들을 모아 추상화하여 만든 클래스
  • 클래스간의 연관 관계를 구축하는 것에 초점 => 자신의 기능들을 하위 클래스로 확장 시키는 느낌
  • 하위 클래스에서 추상 메소드 구현 강제
  • 코드의 재사용성을 높임

공통점

  • 추상 메소드를 가지고 있어야함
  • 인스턴스화 할 수 없음
  • 모두 자바에서 추상화를 구현하는데 사용되는 키워드

차이점

  • 추상클래스는 상속받아서 기능을 이용하고 확장시키기 위한 것
  • 인터페이스는 함수의 껍데기만 있고, 그 함수의 구현을 강제함

=> 인터페이스는 구현이 완전히 생략된 메서드와 상수를 가지며, 다중 상속을 지원하는 반면, 추상 클래스는 일부 메서드의 구현을 제공하고 일반 메서드도 가질 수 있으며, 단일 상속만을 지원합니다. 인터페이스는 서로 다른 클래스 간의 관계를 정의하고, 추상 클래스는 공통된 기능을 추상화하여 코드의 재사용성을 높이는 데 사용됨

반응형