Programming Languages/Java

[5장] Java의 추상 클래스와 인터페이스(interface)

마크투비 2021. 5. 4. 13:07

1. 추상 클래스

추상 클래스

  • 추상 메소드(abstract method)
    • abstract로 선언된 메소드, 메소드의 코드는 없고 원형만 선언
  • 추상 클래스(abstract class)
    • 추상 메소드를 가지며, abstract로 선언된 클래스
    • 추상 메소드 없이, abstract로 선언한 클래스
  • 추상 클래스는 온전한 클래스가 아니기 때문에 인스턴스를 생성할 수 없음

추상 클래스의 상속과 구현

  • 추상 클래스 상속
    • 추상 클래스를 상속받으면 추상 클래스가 됨
    • 서브 클래스도 abstract로 선언해야 함
  • 추상 클래스 구현
    • 서브 클래스에서 슈퍼 클래스의 추상 메소드 구현(오버라이딩)
    • 추상 클래스를 구현한 서브 클래스는 추상 클래스 아님

추상 클래스의 목적

  • 상속을 위한 슈퍼 클래스로 활용하는 것
  • 서브 클래스에서 추상 메소드 구현
  • 다형성 실현

2. 인터페이스

자바의 인터페이스

  • 클래스가 구현해야 할 메소드들이 선언되는 추상형
  • 인터페이스 선언
    • interface 키워드로 선언
    • public interface SerialDriver {…}

인터페이스의 구성 요소들

  • 상수
    • public만 허용, public static final 생략
  • 추상 메소드
    • public abstract 생략 가능
  • default 메소드
    • 인터페이스에 코드가 작성된 메소드
    • 인터페이스를 구현하는 클래스에 자동 상속
    • public 접근 지정만 허용. 생략 가능
  • private 메소드
    • 인터페이스 내에 메소드 코드가 작성되어야 함
    • 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능
  • static 메소드
    • public, private 모두 지정 가능. 생략하면 public

자바 인터페이스 특징

  • 인터페이스의 객체 생성 불가

  • 인터페이스 타입의 레퍼런스 변수 선언 가능

인터페이스 상속

  • 인터페이스 간에 상속 가능
  • 인터페이스를 상속하여 확장된 인터페이스 작성 가능
  • extends 키워드로 상속 선언
  • 예)

  • 인터페이스 다중 상속 허용
  • 예)

인터페이스 구현

  • 인터페이스의 추상 메소드를 모두 구현한 클래스 작성
    • implements 키워드 사용
    • 여러 개의 인터페이스 동시 구현 가능
  • 인터페이스 구현 사례
    • PhoneInterface 인터페이스를 구현한 SamsungPhone 클래스

  • SamsungPhone 클래스는 PhoneInterface의 default 메소드상속