상속

최창효·2022년 1월 4일
0
post-thumbnail

상속이란

일상에서의 상속

  • 상속이란 단어는 일상에서도 흔히 접하는 단어로 부모의 것을 자식이 물려받는다는 의미로 쉽게 이해할 수 있습니다.

프로그래밍의 상속

  • 프로그래밍에서의 상속도 그 내용이 크게 다르지 않습니다. 일상에서 사용하는 뜻과 유사하게 부모의 변수와 메서드를 자식이 물려받는 것이 프로그래밍에서의 상속입니다.
  • 위키피디아에서는 상속을 다음과 같이 정의합니다. '상속은 객체들 간의 관계를 구축하는 방법이다.'

객체지향 프로그래밍

  • 상속은 객체지향 프로그래밍의 주된 특징 중 하나이며 객체지향 프로그래밍을 위해 구현된 개념입니다.

  • 객체지향 프로그래밍이란 '데이터+기능'을 묶은 객체를 만들고, 객체끼리 상호작용하도록 만든 방식입니다.

  • 위 내용이 잘 이해가 되지 않는다면 일단은 아래의 내용이 객체지향 프로그래밍이 추구하는 방향이라고 쉽게 생각해 둡니다.

    • 붕어빵을 먹기 위해 반죽을 빚어서 붕어 모양의 빵을 만든다 X
    • 붕어빵을 먹기 위해 붕어 모양의 틀을 만들고, 필요할 때마다 반죽을 넣어 만든다 O

체지향 프로그래밍에 대한 상세한 내용은 추후에 자세히 다루도록 하겠습니다.

자바의 상속

  • 자바는 객체지향 프로그래밍 언어입니다.

Extends vs Inherit

  • 자바에서는 상속에 대한 예약어로 Inherit(상속받다)가 아닌 Extends(확장하다)를 사용하고 있습니다.
  • 그 이유는 상속의 구체적인 의미는 단순히 물려받는 것이 아니라기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것입니다.
  • 다음의 경우를 생각해 봅시다.
    • A와 똑같은 B를 만들었을 때 A와 B가 동시에 존재할 필요가 있는가?
    • 형이 입던 셔츠와 바지를 물려받아 입은 동생은 형과 돌일한 사람인가?

-> A와 B가 완전히 똑같다면 A를 쓰지 굳이 B를 생성할 필요가 없습니다.
-> 옷은 같지만 그 외 나머지 것들이 다르기 때문에 형과 동생은 다른 사람입니다.

  • 이처럼 공통된 기능을 물려 받은 뒤, 자신만의 속성을 추가하기 때문에 상속은 Inherit이 아닌 Extends의 의미에 더욱 부합합니다.

특징

  • 여러 자식에게서 중복되는 요소를 부모에서 관리하고, 이를 자식이 상속하도록 하면 재사용성이 올라가고 유지보수가 편리해 집니다.
  • 부모 클래스의 생성자는 자식 클래스에 의해 자동으로 호출됩니다.
  • 자바의 상속은 다중상속을 허용하지 않습니다. (인터페이스를 활용해야 합니다)

References

profile
기록하고 정리하는 걸 좋아하는 개발자.

0개의 댓글