What I learned

오늘은 상속의 연장선으로 조금 더 공부를 해보았다. 상속관계 비슷해보이지만, 다른 추상 클래스 관련하여 아래와 같이 정리해보았다.

클래스가 완성된 설계도라면, 추상 클래스는 미완성된 설계도와도 같다. 즉, 부모 클래스가 되는 추상화 클래스에서 완성시키지 못한 method를 상속 받는 클래스에서 extends로 받아와서 완성을 시키다.

그렇다면 상속 클래스와 추상 클래스는 무엇이 다를까?

가장 먼저 만들어진 의도가 다르다고 할 수 있다. 상속 클래스일 경우 부모 클래스가 가지고 있는 모든 속성을 자식 클래스에서 extends 키워드를 사용하여 전부 전달을 받아 사용 할 수 있다.

On the other hand, 추상 클래스일 경우 A, B, C 클래스에서 공통적으로 사용되는 "기능"을 추상 클래스에 넣어주어 이름/규격 등을 구체화 한 후, extends 키워드를 사용하여 "공통 기능"을 상속받아 A, B, C, 클래스가 각각 사용 할 수 있다. 즉, 위의 그림과 같이 A 클래스에 기능 1, 기능 2 / B 클래스에 기능 1, 기능 2 / C 클래스에 기능 1, 기능 2를 중복되게 작성하기 보다는 추상 클래스에 기능 1과 기능 2를 넣어주고 (단, 추상 클래스의 메소드는 미완성) A, B, C 클래스에서 필요한 기능들을 가져와 원하는 대로 사용할 수 있다. 정리하자면, 추상 클래스는 A, B, C 클래스의 필요에 의해 생성되는 클래스라고 정리 할 수 있다.

추상 클래스는 왜 사용할까?

아마도 가장 큰 이유는 상속을 받는 클래스에 따라서 메서드의 내용이 달라질 수 있기 때문에, 상위 클래스인 추상 클래스에서는 선언부만 작성을 하고, 구체적인 내용은 상속을 받는 하위 클래스에서 Overriding을 통하여 구현하도록 비워두는 것이라고 생각한다.

profile
Think out of the Box

0개의 댓글