서론
처음으로 배웠던 언어가 C와 C++이였고 이때, 클래스와 상속의 중요함은 너무나 많이 들었기에 잊을 수가 없다. 그래서 언어 스터디를 하면서도 상속부분까지는 복습하는 느낌으로 진행했고 실제로도 딱히 막히는 부분은 없었다. 하지만 익숙함을 경계해야 한다고, 쉽게 놓칠 수 있는 부분등과 함께 상속을 짧게 나마 정리해보고자 한다.
상속
객체 지향 프로그래밍(OOP)에서 상속은 객체들 간의 관계를 구축하는 방법이다.
설명만 들었을 때는 쉽게 와닿지 않는 것이 상속이다. 하지만 실제로 코드로 구현해보면 어렵지 않다. 아래 예시를 보자.
public class Person{
String name;
int age;
public void speak(){
...
}
public void walk(){
...
}
...
}
public class SoccerPlayer extends Person{
public void shoot(){
...
}
...
}
상속을 설명할 때, 가장 많이 드는 예시는 부모와 자식이다. 하지만 조금 식상한 면이 있기도 하고 월드컵으로 인해 축구 생각이 나서 위와 같은 예시를 작성했다. 암튼 이름만 다르고 똑같으니 위의 예시를 함께 보자.
Person이라는 클래스가 존재한다. 해당 클래스는 사람들이 공통적으로 가지는 항목들을 클래스의 필드로써 가지고 있다.
아래에는 SoccerPlayer라는 클래스가 있고 이는 Person 클래스를 상속받고 있다.
그럼 왜 SoccerPlayer는 Person을 상속받는 받는 것일까?
일반적으로 상위 클래스는 하위 클래스의 범위보다 넓은 범위를 표현한다. 축구선수는 사람이라는 범주에 속하며, 이를 활용하면 축구선수뿐만 아니라 다양한 운동선수, 직업, 종교인 등 사람이라는 넓은 범주에 들어있는 모든 것들을 Person 클래스의 하위 클래스로 생각할 수 있다. 그리고 많은 하위 클래스들은 Person을 상위 클래스로써 상속을 받을 수 있는 것이다.
개념적인 건 어느정도 이해가 됐을 것이다. 그럼 왜 상속을 사용하는 걸까?
상속의 장점
- 상속은 객체의 재사용이라는 장점이 존재한다.
- 이는 코드의 중복을 줄일 수 있어 코드의 간결성을 제공해 주는 객체지향적 언어의 장점과 특징을 나타낸다.
- 또한, 상속은 이미 작성된 검증된 소프트웨어를 재사용하는 것으로 상속을 통하여 기존 클래스의 필드와 메소드를 재사용할 수 있다.
- 잘 정의된 상위클래스가 있다면 상속을 받는 하위클래스의 작성이 간편해지고 그러므로 개발 시간이 단축될 수 있다.
- 상위 클래스에 공통된 속성을 두어 코드의 유지보수가 용이해진다.
- 신뢰성 있는 소프트웨어를 손쉽게 개발할 수 있다.
상속 너무나 중요하다. 하지만 어렵지 않기에 즐겁게 학습하자.