추상 클래스와 인터페이스

초콜렛빵·2022년 5월 8일
0

TIL

목록 보기
3/27

추상 클래스(Abstract Class)와 인터페이스(Interface)

추상 클래스(Abstract Class)

  • 추상 클래스는 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 클래스
  • 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의하도록 도움
  • 이 클래스를 상속받는 모든 클래스에서는 추상 메소드를 반드시 재정의 해야하는 특징을 가짐

    추상 클래스는 추상 메소드를 포함하는 것 외에는 일반 클래스와 동일

추상 메소드(Abstract Method)

  • 추상 메소드란, 자식 클래스에서 반드시 오버라이딩(@Overriding)을 해야만 사용할 수 있는 메소드를 의미
  • 선언부만 존재하고, 구현부는 작성되지 않음
  • 이를 선언하는 목적은 추상 클래스를 상속받은 자식이 반드시 추상 메소드를 구현하도록 하기 위함
  • 이를 통해 생산성을 향상시키고, 배포를 쉽게 함
  • abstract 타입 메소드명();

사용 목적

  • 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함

인터페이스(Interface)

  • 다중 상속의 이점을 활용하기 위해 생성
  • 다른 클래스 작성시 기본이 되는 틀을 제공하고, 중간 매개 역할을 하여 일종의 추상 클래스를 의미
  • 단, 인터페이스는 오로지 추상 메소드와 상수만 포함 가능

인터페이스 선언

  • 접근제어자와 함께 interface를 사용

    접근제어자 interface 인터페이스명 {
    	public static final 타입 상수명 = 값;
        }
  • 단,모든 필드는 public static final 이며, 모든 메소드는 public abstract 여아 함

인터페이스 구현

  • 자신이 직접 인스턴스를 생성할 수는 없고, 추상 메소드를 구현해줄 클래스를 작성

    인터페이스는 인터페이스로부터만 상속 받을 수 있고, 여러 인터페이스 상속 가능

장점

  1. 대규모 프로젝트 개발시 정형화된 개발을 위한 표준화 가능
  2. 클래스 작성과 인터페이스 구현 동시 가능하여 개발 시간 단축
  3. 클래스와 클래스 관계를 인터페이스로 연결 시, 독립적인 프로그래밍 가능

추상 클래스와 인터페이스 사용 이유

  • 각각의 사용용도가 다름
  • 추상클래스는 단일 상속, 인터페이스는 다중상속이 가능
  • 추상 클래스의 사용 목적은 상속을 받아 기능의 확장을 위해 사용
  • 인터페이스는 구현하는 모든 클래스에 대해 특정 메소드를 반드시 구현하도록 강제하는 역할

참조

profile
차근차근 기록하고 배우는 개발자

0개의 댓글