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

희원·2022년 3월 16일
0

추상클래스(abstract class)

  • 구현 코드 없이 메서드의 선언 만 있는 추상 메서드(abstract method)를 포함한 클래스

    • 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성
      예) int add(int x, int y); // 선언, 추상 메서드

    • 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ })
      예) int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님

  • 모든 메서드가 구현 된 클래스라도 abstract로 선언되면 추상 클래스로 인스턴스화 할 수 없다.

  • 추상 클래스의 추상 메서드는 하위 클래스가 상속 하여 구현해야 한다.

인터페이스(Interface)

  • 모든 메서드가 추상 메서드로 선언된다. (public abstract ...)

  • 모든 변수는 상수로 선언된다. (public static final ...)

  • 클래스나 프로그램이 제공하는 기능을 명시적으로 선언하여, 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.

  • 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.

  • 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있다. (다형성)


추상클래스와 인터페이스

공통점

  • 추상클래스를 상속받은 클래스와 인터페이스를 구현하는 클래스 모두
    오버라이딩한 메서드를 구현해야 한다.

차이점

  • 추상클래스는 extends 키워드를 사용하여 상속받을 수 있다.
  • 자바는 단일 상속을 지원하기 때문에 추상 클래스를 상속받은 클래스는 다른 클래스를 상속받을 수 없다.
  • 인터페이스는 implements 키워드를 사용하여 구현할 수 있다.
  • 인터페이스는 한 클래스에서 여러 인터페이스를 구현할 수 있다.
profile
모든 시작은 사소함으로부터

0개의 댓글