개발하는 구름이 2023. 7. 21. 08:45

#상속

상속 시, 하위 객체(자식)는 상위 객체(부모)의 특징(메소드,변수 등)을 물려받게 된다.

이 때, 상위 객체(부모)의 특징(메소드,변수 등)을 새롭게 구현하는가, 그대로 사용하는가에 따라서 상속의 형태가 갈리게 된다.

  • extends
    • 부모에서 선언/정의를 모두하며, 자식은 오버라이딩 할 필요 없이 부모의 메소드/변수를 그대로 사용할 수 있다.
    • "부모의 특징을 연장해서 사용한다."라고 기억하면 될 듯!
  • implements(interface 구현)
    • 부모 객체는 선언만 하며, 정의는 반드시 자식이 오버라이딩해서 사용한다.
    • "부모의 특징을 도구로 사용해 새로운 특징을 만들어 사용한다."라고 기억하면 될 듯!
  • abstract
    • extends와 interface의 혼합이다.
    • extends를 사용하지만, 몇 개는 추상 메소드로 구현되어 있다.

 

#extends

  • 사실 extends가 상속의 대표적인 형태이다.
  • 모든 선언/정의를 부모가 하며, 자식은 오버라이딩 할 필요 없이 부모의 메소드/변수를 그대로 사용할 수 있다.
  • 물론, 필요에 따라 오버라이딩 해도 상관 없다.

 

#implements

  • 부모는 선언만 하며, 반드시 자식이 정의를 오버라이딩해서 사용한다.

정리!
- extends는 클래스 한 개만 상속 받을 수 있으며, 자식 클래스는 부모 클래스의 기능을 사용할 수 있다.
- implements는 여러 개의 interfaces를 상속 받을 수 있으며, 자식 클래스는 부모의 기능을 다시 정의해서 사용해야한다.