오늘은 객체지향의 핵심 개념인 상속, 다형성, 추상을 학습했다. 기존에 사용하던 객체와 메소드 개념이 확장되면서, “코드를 재사용하고 구조를 유연하게 만드는 방법”에 집중하는 수업이었다.
상속은 기존 클래스의 필드와 메소드를 그대로 물려받아 사용하는 개념이다.
공통 기능을 부모 클래스에 두고, 자식 클래스는 필요한 기능만 추가하거나 수정할 수 있다.
상속은 “is-a 관계”일 때 사용하는 것이 가장 적절하다.
다형성은 부모 타입의 변수로 자식 객체를 다룰 수 있는 성질이다.
같은 메소드 호출이라도, 실제로 실행되는 메소드는 객체의 실제 타입에 따라 달라진다.
다형성을 사용하면 객체를 한 가지 방식으로 통일해서 다룰 수 있다.
추상 클래스는 “공통 구조는 정의하지만, 구현은 자식에게 맡기는 클래스”이다.
객체를 직접 생성할 수 없으며, 상속을 통해서만 사용된다.
추상 클래스는 설계 단계에서 규칙과 틀을 강제하는 역할을 한다.
| 개념 | 역할 |
|---|---|
| 상속 | 기존 클래스를 재사용하고 확장 |
| 다형성 | 부모 타입으로 다양한 자식 객체 처리 |
| 추상 | 공통 구조를 강제하고 구현은 위임 |
이전까지는 객체를 “기능 묶음” 정도로만 사용했는데, 오늘 수업을 통해 객체가 설계 단위라는 느낌이 들기 시작했다.
특히 다형성과 추상 클래스는 처음에는 어렵지만, 프로그램 규모가 커질수록 반드시 필요하다는 점을 이해했다.
앞으로는 단순 기능 구현보다 “왜 이 구조를 쓰는지”를 더 고민해봐야겠다.