Posts 추상클래스와 인터페이스의 다형성
Post
Cancel

추상클래스와 인터페이스의 다형성

  • Development Env.
  • post date : 2019. 08. 27
  • OS : macOS Majave 64bit
  • Java version : JDK 1.8.0 J_220 JRE8
  • Eclipse : 2019-06 (4.12.0)

추상클래스와 인터페이스는 추상 메소드를 가지고 있다는 공통점을 가지고 있고, 상속 받은 자식 클래스는 부모의 함수를 오버라이딩하여 사용할 수 있다는 점이 같다. 그럼 두 가지의 경우가 각각 어떤 상황에서 사용되는지 살펴보겠다.

추상클래스

추상 클래스는 자식 클래스들이 공통으로 가지고 있는 필드와 메소드를 모아 정의한 클래스로 많이 말한다. 공통으로 가지고 있는 부분을 한데 모아 추상클래스로 만든다는 소리인데, 어떤 것들로 추상 클래스가 구성이 되어 있는지 살펴 보겠다.

추상클래스의 구성

  • 멤버 변수
  • 멤버 변수
  • 생성자
  • 추상 메소드

추상 클래스는 일반 클래스와 같지만 “추상 메소드”를 포함하고 있다는 점이 다르다. 때문에 추상 클래스를 상속받은 자식 클래스는 추상 메소드를 오버라이딩하여 구현부를 작성하여야 하고, 구현하지 않으면 자식 클래스도 추상 클래스가 된다. 인터스페이스와 비교하기 위해서 눈여겨 보아야 할 점은 멤버 변수(필드)와 생성자를 가지고 있다는 것이다. (물론 멤버 함수도..!) 추상 클래스에 필드와 생성자가 구성됨으로써 모호성이 발생되고 Java는 추상클래스의 다중상속을 허용하지 않는다모호성에 대한 설명은 여기서 다루지 않겠음). 때문에 추상 클래스를 상속받는 자식 클래스는 하나의 부모를 가지고 부모가 가지고 있는 필드와 메소드를 가진다.

인터페이스

인터페이스는 보통 서로 다른 클래스들의 묶기 위해서 사용한다고 한다. 조금 더 정확하게는 다른 부류의 객체들을 공통적으로 실행해야 할 때 추상화 메소드로 묶어서 관리하는 것이 인터페이스이다. 추상 클래스와 조금 다른 인터페이스의 구성에 대해서 살펴보자.

인터페이스의 구성

  • 상수
  • 추상 메소드

디폴트(default) 메소드와 정적(static)메소드도 있지만 여기서는 추상 클래스와 인터페이스의 차이점에 대해서 좀 더 다뤄보려고 한다.

위의 구성을 살펴보면 ‘생성자’와 ‘필드’ 등이 없다. 왜 인터페이스는 ‘상수’와 ‘추상 메소드’를 가질까? 앞서 Java는 추상 클래스의 다중상속을 허용하지 않는다고 했다. 그 이유는 모호성의 발생때문이며, 단일 상속만 허용하고 있다. 하지만 다중 상속이 주는 이점이 너무 많기 때문에 포기 할 수 없던 Java는 인터페이스를 통해 다중 상속의 이점을 챙긴다.

모호성이 발생히면 안 되는 인터페이스는 모호성을 일으키는 요소를 제외하고 만든다. 그렇기 때문에 상수와 추상 메소드 등으로 만들어진다.

표로 정리해 보면,

 추상 클래스인터페이스
상속단일 상속다중 상속
모호성모호성 발생모호성 발생하지 않음
생성자가질 수 있음가질 수 없음
객체화자식 클래스가 상속받아 객체화 될 시객체화 할 수 없음
cell4cell5cell6

다형성(Polymorphism)

다형성이란 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 상속 개념의 이해기 필요하기 때문에 부모 클래스와 자식클래스로 다시 설명을 해보자면, 부모 객체 타입으로 오버라이딩 된 함수가 있다면 그 함수를 통해서 자식의 각각의 타입으로 구현할 수 있는 성질을 다형성이라고 한다.

왜 사용하는건가요?

여러 상황이 있겠지만 메소드를 변경하는 상황이라고 가정해보겠다. 프로그램은 새로운 기능을 가진 것으로 교체될 수도 있고, 상황에 따라 다른 메소드가 구현되어야 할 것이다. 교체되는 객체는 기존과 사용 방법은 동일하지만 실행 결과는 더 나아야 할 것이다. 부모 클래스가 가지고 있는 필드와 메소드를 가지고, 부모의 메소드를 오버라이딩해서 교체한다면, 기존의 구동이 유지되면서 더 나은 메소드로 실행결과가 나올 것이다.

(내용수정중)

This post is licensed under CC BY 4.0 by the author.

싱글톤(SingleTon)

comparable 상속받아 비교하기

Comments powered by Disqus.