brunch

You can make anything
by writing

C.S.Lewis

상속의 특징

* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.

* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.

* 그리고 이 글에서는 코드 최소한으로 다루고 있습니다.


지난번에 상속의 개념에 대해서 알아보았습니다.

이번엔 상속을 사용하면 무엇이 좋은지, 그리고 특징에 대해서도 알아보도록 하겠습니다.


클래스다이어그램

우선 객체화와 상속에의 차이에 대해서 먼저 알아보도록 하겠습니다.

그전에 우리가 알아야 할 그림이 있습니다.

바로 클래스 다이어그램(class diagram)입니다.

깊은 내용을 설명하자면 본 취지와 어긋나기에 딱 필요한 부분만 다루도록 하겠습니다.

위의 표 모양에 윗부분은 class 이름을, 아랫부분은 메서드를 의미합니다.


Main 클래스 오른쪽엔 Operator라는 클래스가 있군요.

그리고 클래스 멤버로는 plus라는 함수가 존재합니다.

plus(int, int)는 plus함수가 int 타입의 매개변수를 2개 받는다는 뜻입니다.

그리고 그 클래스 사이에 점선 화살표누가 누구를 객체화한다는 뜻입니다.

즉, 위 그림(다이어그램)에서는 Main 클래스가 Operator를 객체화하는 모습을 그린 것입니다.


자, 이제 본론으로 들어가겠습니다.

Main 클래스가 사칙연산을 하려고 합니다. 이때 사칙연산과 관련된 메서드 plus, minus, multi, devide는 Operator, Operator2, Operator3, Operator4 클래스의 멤버로 존재합니다.

그럼 Main 클래스의 입장에서는 이 네 개의 메서드를 사용하기 위해 각각의 클래스를 객체화하는 작업을 해야 할 것입니다.


코드로 표현하자면 위 그림과 같습니다.

그동안의 예시보다는 많은 클래스를 객체화하기에 다소 정신없어 보이긴 하죠?


이제 상속을 활용해 보겠습니다. 여기서 실선의 삼각형은 상속을 의미합니다.

Operator3는 Operator4를 상속받습니다.

그리고 Operator3을 Operator2 가 상속받고 Operator2를 Operator 가 상속받습니다.

즉 Operator는 부모, 조부모, 증조부모의 내용까지 모두 상속받은 셈이 됩니다.

조상들의 재산을 대대로 물려받으면 재산의 양이 큰 것처럼, Operator 도 물려받은 메서드가 많네요.


코드 상에서 보면 Main 은 Operator를 객체화하면, Operator 래 가지고 있는 plus 메서드는 물론이고 물려받은 minus, multi, devide 메서드 도 사용 할 수 있게 됩니다. 마치 Operator 가 본래 자기가 가지고 있는 것처럼 말이죠.

상속에서의 핵심인 자기 것처럼 이란 뜻은 바로 이것입니다.

상속을 사용했을 때와 사용하지 않았을 때의 코드를 비교해 보면 내 것처럼 사용한다는 개념과, 이것이 왜 유용 한지에 대해 이해할 수 있을 것입니다.

상속을 사용하지 않으면 사용자 입장에서는 필요한 메서드를 가지고 있는 클래스들을 하나하나 객체화해야 하는 수고로움이 있을 것입니다.

하지만 상속을 사용하면 하나의 클래스만 객체화하여 여러 클래스의 메서드를 사용할 수 있습니다.


그래서 내가 작성한 코드 없이 상속 만을 이용해 다른 사람들에게 유용한 기능을 제공해 줄 수도 있습니다.

예를 들어 사람들이 자주 쓸 것 같은 클래스들을 한대 모아 Utils라는 클래를 만들었다고 가정해 보겠습니다.

그러면 사람들은 Utils 클래스만 객체화하여 다른 클래스들의 유용한 기능들을 사용할 수 있을 것입니다.

이런 방법을 통해 사용자들이 다름 사람들의 소스를 더욱 편리하게 사용할 수 있게 할 수 있습니다.

OOP의 기본 철학과도 잘 맞아떨어지죠?


하지만 왜 상속을 굳이 불편하게 하나씩 해야 하는지에 대해서 의문이 하나 들지 않나요?

한꺼번에 여러 개의 클래스를 상속받으면 참 편할 텐데 말이죠.


C++ 등의 일부 언어에서는 다중 상속을 허용합니다만 자바에서는 불가능합니다.

그 이유는 java의 class는 분류의 개념이기 때문에 그렇습니다.

인간이 조류이면서도 포유류 일 수 없기에 한 번에 한 분류의 하위로 들어가야만 합니다.


어때요? 상속의 특징과 사용법에 대해 알아보니 상속을 사용함으로써 어떤 점이 좋은지 이해가 되시나요?

다음시간에는 더 상속을 이용하는 더 재미있는 기능에 대해 알아보도록 하겠습니다.

매거진의 이전글 JAVA 상속의 개념
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari