9. What is the difference of between abstract class and interface using for ?

toutbon·2024년 2월 27일
0

질문의 목적

  • abstract class 와 interface의 차이를 알고 있는지

Generalization & Specialization

  • 실무에서 클래스를 디자인 할 때 종속관계를 두게된다

  • 상속을 하면 자식클래스에서는 부모클래스의 영향을 많이 받게된다

  • 부모클래스 : super class, 자식클래스 : sub Class

  • generalization
    - bottom up 방식
    - 하위클래스들을 토대로 상위 클래스를 설계하는 경우

  • specialiaztion
    - top down 방식
    - 상속받아서 sub 클래스를 설계하는 경우

abstract class

  • 부모 클래스가 어느정도 디자인 되어있으면서 서브 클래스를 디자인 하는 경우에 부모 클래스에는 없는, 특정 자식클래스에서만 사용하는 기능을 상세 구현한다
  • 슈퍼 클래스가 어느정도 디자인 되어있으면서 서브클래스에 완성된 형태를 서브 클래스에 요구하는 경우 (서브클래스에서 구현을 해야하는 경우를 말하는 것 같다) --> 이때 슈퍼클래스를 abstract class 디자인 함
  • 메서드의 구현부는 서브클래스에 맡기는 abstract method 가 있을 수 있다 (abstract method를 가진 클래스는 반드시 abstract class로 선언 되어야 한다)
  • 자바는 single inheritance 만 지원함
  • 할일을 마킹만 해두고, 일은 서브클래스에 미루는 것 같다. (내생각)

interface

  • 실질적인 구현이 전혀 없는 abstract method로 가득찬 깡통 같은 클래스
  • 구현은 완전히 서브클래스에게 맡김
  • 단지 서브클래스에게 어떤 메서드들을 가질 것 인지를 알려준다
  • 일종의 "규약"과 같다 -> 인터페이스만 봐도 서브클래스가 어떤 기능을 가지고 있을 지 알 수 있다
  • interface 내부 메서드는 empty shell 이다
  • interface 내부 변수를 선언할 수 있지만, 자동적으로 public static final 이 붙게 된다.
    - 변수가 아닌 상수로 이를 이용함
  • 다중 구현(multiple implementation) 가능 -> 인터페이스는 상속이 아니라 구현의 개념이기 때문

keyword

profile
뚜봉

0개의 댓글