추상화(abstract), 인터페이스

BruteForceA·2022년 1월 12일
0
post-custom-banner

추상화란?

클래스간 공통점을 찾아서 공통의 조상을 만드는 작업


추상 메소드(abstract method)

  • 선언되어있으나 구현되어 있지 않은 메소드
  • abstract 키워드를 붙여 선언
    ex) public abstract in getValue();
  • 서브클래스에서 오버라이딩하여 재 구현 해주어야 함(강제성부여)

추상 클래스(abstract class)

  • 추상메소드를 하나라도 가진 클래스
  • abstract 키워드를 붙여 선언
  • 혹은, 추상 메소드가 하나도 없지만 클래스앞에 abstract 키워드가 붙은 경우.

추상클래스의 특성

  1. 추상 클래스 자체로 객체를 생성할 수 없다.
  2. 상속관계에서 서브클래스가 반드시 구현해야 함을 알리때 사용(강제성)
  3. 슈퍼클래스에는 개념적 특징을 정의하고 서브클래스에는 구체적 행위를 구현하여 설계와 구현을 분리 할 수 있다.

인터페이스란?

클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않습니다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있습니다. 하지만 인터페이스(interface)는 오로지 추상 메소드와 상수만을 포함할 수 있습니다

인터페이스의 특징

  • 모든 메소드가 추상메소드인 클래스
  • 상수와 추상메소드로만 구성되어있어 변수를 필드에 선언 불가
    (Java 8 버전 부터는 일반메소드도 선언가능)-> default, static
  • interface 키워드를 붙여 선언
    -> public interface Cod(){...}
  • 인터페이스는 객체 생성이 불가능
  • implements를 사용한다.
  • 인터페이스를 상속하여 확장된 인터페이스 작성가능
  • 다중 구현 가능
  • 인터페이스에는 선언만 하여 선어부와 구현부를 나누어 작성 가능

인터페이스 구현

  • implements 키워드 사용하여 구현
  • 여러 개의 인터페이스를 동시에 구현할 수있다.
  • 상속과 구현이 동시에 가능
  • final, abstact 생략 가능
  • 하나의 클래스가 여러개의 인터페이스를 구현 할 수 있다.
  • 인터페이스끼리도 상속이 가능하다.

추상클래스 vs 인터페이스

추상클래스

  • 변수도 선언 가능하다.
  • 일반 메소드 포함 가능
  • 모든 서브 클래스에 공ㅇ통된 메소드가있는경우에는 추상클래스가 적합

인터페이스

  • 상수만 가능하다.
    모든메소드가 추상메소드
  • 상수만 필드에 포함 가능
  • 다중 구현 지원

참고

TCP School - 인터페이스란

post-custom-banner

0개의 댓글