추상클래스

  • 추상메소드를 단 하나라도 가지고 있는 클래스는, 반드시 추상클래스로 정의해야한다.

  • 추상메소드가 하나도 없지만 abstract 키워드를 가지고 있는 클래스

<br/>

<br/>

추상클래스 특징

  • 추상클래스는 인스턴스를 생성 할 수 없다.

  • 추생클래스를 상속받은 서브클래스는 추상메소드를 구현해야하고, 그렇지 않으면 추상클래스가 된다

<br/>

<br/>

추상클래스 용도

  • 그럼 왜 추상클래스를 사용해야 할까??

  • 첫째로, 다형성을 지원해준다.<br />
    서브클래스는 추상클래스를 상속받아 목적에 맞게 구현하여, 객체지향의 특성이 다형성을 지원한다.

  • 둘째로, 설계와 구현을 분리해준다. <br />
    추상클래스는 설계하고, 서브클래스는 목적에 맞게 구현되어, 설계와 구현을 분리 해준다.

  • 셋째로, 계층적 상속관계를 가지는 구조를 만들 때 사용한다.<br />
    예를들어 사람이라는 추상클래스에 do()라는 추상메소드를 선언하고,<br />
    농부, 어부, 개발자는 사람의 추상클래스를 상속받아 do() 메소드를 구현한다.<br />
    사람 <- 농부,어부, 개발자 간의 계층적 상속구조를 만들 수 있다.

<br/>

<br/>

<hr />

인터페이스

모든 메소드가 추상메소드이며, 또한 상수만 가지는 것을 말한다.

<br/>

인터페이스 특징

  • 인스턴스를 생성 할 수 없다.

  • 인터페이스는 다른 인터페이스를 상속할 수 있다.

  • 모든 메소드는 public 이며 생략가능하다

  • 모든 상수도 public static final이며 생략가능하다.

  • 다중상속을 지원한다

<br/>

<br/>

<br/>

<hr />

추상클래스 VS 인터페이스

  • 추상클래스

<br/>

<ol style="margin-left:40px">

  • 일반 메소드, 변수 포함

  • 모든 서브클래스에 공동된 메소드가 있는 경우 추상클래스가 적합

<br/>

<br/>

  • 인터페이스

<br/>

<ol style="margin-left:40px">

  • 모든 메소드가 추상메소드

  • 상수만 가능

  • 다중상속 지원

<br/>

<br/>

<br/>

<br/>

0
이전 댓글 보기
등록
TOP