칠십 한 걸음과 칠십 두 걸음에서는 상속과 연관성이 없거나 조금 연관성이 있는 명령문인 equals와 final에 대해서 공부를 했습니다. 그 두 걸음만 보셔도 충분히 이해를 하실 수 있습니다. 이제부터는 상속에 대한 내용을 더 공부를 진행을 하도록 하겠습니다.
이번 걸음에서는 추상화 기초에 대해서 배워 보도록 하겠습니다. 추상화에 기초가 되는 기본적인 내용들을 이번 걸음에서 같이 공부를 해보도록 하겠습니다. 같이 이번 걸음으로 공부를 하시면 추상화에 기초를 완벽하게 이해를 하실 수 있습니다.
이번 걸음에서는 추상화가 무엇 인지, 추상화가 나온 이유, 추상화에 종류에 대해서 이번 걸음에서 상세히 설명을 드리도록 하겠습니다.
추상화 란?
추상화를 간단히 설명을 드리면 실체는 존재하지 않고 생각만 한 것을 추상적이라고 이야기를 합니다. 그런 상상들이 실체를 존재하게 만듭니다. 이런 과정은 옛날부터 현재까지 이어져서 문명이 발전이 됐습니다. 이와 마찬가지로 Java에서 추상적으로 선언을 해서 생각만이 존재를 한 것을 정의를 해서 그 상상을 실제로 사용을 하게 합니다. 이때 선언을 한 것을 추상화라고 보시면 됩니다.
그럼 여기서 추상화가 될 수 있는 것은 Java에서 무엇일까요? Java에서 추상화가 되는 존재는 Method입니다. 꼭 이 부분을 명심하시면 됩니다.
※ 추상화는 Method로 움직이지만 추상화 Method를 가진 class는 일반 class와 다른 형태를 가지게 됩니다.
추상화가 나온 이유
Java에서 추상화의 개념이 나온 이유가 무엇일까요? 추상화가 나오는 것은 당연한 수순이었습니다. 이전 상속을 공부하는 걸음에서 참조 자료형 변환과 Method Overriding을 공부를 해서 왜 사용을 하는 지를 공부를 했습니다. 그때 자식들 객체를 사용을 했지만 부모의 객체를 사용하지 않게 됐습니다. 그 이유는 자식이 재정의를 하면서 부모의 Method를 부를 없게 되기 때문입니다.
그럼 부모의 Method는 사용을 하지 않는데 굳이 정의를 해야 할까요? 당연히 정의가 필요 없어집니다. 그렇기 때문에 추상화라는 개념으로 Method를 선언을 하게 만든 것입니다.
추상화 종류
우선 추상화 Method를 가지면 객체화를 진행을 할 수 없습니다. 그 이유는 Method가 정의가 없기 때문에 객체가 된다면 그 Method 호출 시 어떤 동작을 해줘야 하는지 알 수가 없기 때문입니다. 그럼 추상화 Method의 종류를 설명 드리겠습니다.
abstract class : 추상화 클래스 입니다. 일반 class와 똑같지만 추상화 Method를 가지고 있는 class입니다.
interface : interface는 모든 Method가 추상화 된 Method 입니다.
위에서 설명한 abstract class와 interface는 스스로 객체를 만들 수 없고 무조건 상속을 받아서 자식이 Method Overriding을 통해서 재정의를 해야 자식 class를 통해서 사용을 할 수 있게 됩니다.