본문 바로가기

ABAP 프로그래밍 개념/Object-Oriented ABAP

ABAP OOP : Inheritance(상속) PART1

Inheritance Relationship(상속 관계)를 사용하면, subclass(하위 클래스)는 superclass(상위클래스)의 모든 특성을 상속받을 수 있습니다. 부가적으로, 상속된 클래스(subclass)는 자신만의 추가적인 구성요소를 더 할 수 있고, 상속받은 methods들의 구현을 수정할 수 있습니다.

=> 상위 클래스의 모든 특성 상속 + 자신만의 구성요소 추가 + method 재정의 가능

상속 관계는 개발자에게 클래스간의 유사성을 강조할 수 있게 해줍니다. 상의 클래스에서 실행가능했던 모든 특징들은 자동으로 하위 클래스에서도 가능합니다. 아래 그림을 보면( 이전 글에서 정의한 CL_VEHICLE을 기억하고 계셔야 합니다)
superclass인 CL_VEHICLE은 탈 것의 모든 유형에 대한 공통의 특징을 구현합니다. 이를 상속받는 subclass인 cl_car, cl_bus, cl_truck은 CL_VEHICLE의 모든 특징을 상속받고, 자신들 클래스만의 고유한 특성을 가지고 있습니다.

Superclass CL_VEHICLE과 상속받은 subclasses들

상속 관계는 subclass들이 superclass와 "is a 관계"를 공유할 때 사용하는 것이 좋다(예시를 보면 car is a vehicle, bus is a vehicle 등..이 가능하다). 당신이 superclass로부터 subclass로 진행하고 싶으면, superclass의 객체보다는 subclass의 객체가 더 구체적입니다. 그러나 subclass에서 superclass로 간다고 봤을 때, 객체는 더 일반적입니다.

다른 말로 하면, superclass는 subclass의 일반화된 대상입니다, 그리고 subclass는 superclass의 좀 더 특화된 대상입니다. 우리의 클래스는 많은 subclass들을 가지고 있습니다, 그러나 subclass들은 오직 하나의 superclass를 가집니다. 이것은 상속관계가 오직 한 단계로 이루어지는 것을 말하지는 않습니다. Inheritance Tree 다 단계로 이루어질 수 있습니다.(A라는 Subclass의 superclass인 B가 다른 C의 subclass일 수 있습니다). subclass와 superclass는 one-sided relationship을 가지고 있습니다. 이 의미는 subclass의 상위가 어떤 superclass인지는 알 수 있지만, superclass는 누가 subclass인지 알 수는 없다는 의미입니다.

superclass에 새 구성요소가 추가된다면, 자동으로 그것은 subclasses들에서도 사용 가능합니다. 이것은 새 코드의 반복을 줄여주고 superclass의 모든 공통 구성요소들을 중앙에서 관리할 수 있게 해줍니다.

반응형