728x90

Abstract Class

  • 추상클래스(Abstract Class)는 하나 이상의 추상 메소드를 포함하는 클래스이다.
  • 추상 메소드란 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것.
  • 추상메소드는 추상클래스를 상속 받은 서브 클래스에서 구현된다.
  • JAVA에서 추상클래스와 추상메소드를 선언하기 위해서는 접근제어자 뒤에 abstract를 붙인다.
  • 클래스를 abstract로 지정하면 new를 통해 객체를 직접 생성할 수 없다.
  • 메소드에 abstrat를 사용하면 interface의 메소드와 같이 구현 부분은 없다.
  • abstract로 선언한 메소드를 자식클래스에서 반드시 구현해야 한다.(오버라이딩)

 

Interface

  • 인터페이스(Interface)는 추상메소드로만 구성되어 있다.
  • 추상클래스와 마찬가지로 인터페이스에서 선언된 추상메소드는 서브클래스에서 구현.
  • JAVA에서 예약어로 class 대신 interface를 사용하며 extends 대신 implement로 서브클래스에서 상속 받는다.
  • 모든 멤버 변수는 public static final 이어야 하며, 생략할 수 있다.
  • 모든 메소드는 public abtract 이어야 하며, 생략할 수 있다.

public static final 사용 목적

인터페이스 변수는 아무 인스턴스도 존재하지 않는 시점이기에 스스로 초기화 될 권한이 없다.

public static final을 사용해 구현 객체의 같은 상태를 보장한다.

 

Interface vs Abstract

공통점

  • New 연산자로 인스턴스 생성 불가능
  • 프로토타입만 있는 메소드를 갖는다
  • 사용하기 위해서는 하위클래스에서 확장/구현해야 한다

차이점

  • 사용하는 키워드가 다르다
  • Abstrat는 일반 메소드를 사용할 수 있지만, Interface는 메소드 선언만 가능하다

 

 

728x90

+ Recent posts