코틀린 기본 문법(3)_객체지향 프로그래밍(심화)

littlecsh·2023년 12월 1일

kotlin

목록 보기
3/8
post-thumbnail

저번 글에 이어 오늘도 객체지향 프로그래밍에 대해 정리하려고 한다.
코드를 통해 클래스, 객체, 생성자에 대해 알아보기로 했지만
아직은 머리에 명확히 들어와있지 않아, 뒤로 미루기로 했다.

오늘은 상속에 관해 알아보려고 한다.
상속은 우리가 아는 그 상속이 맞다.

상속
1. 뒤를 이음.
2. 법률 일정한 친족 관계가 있는 사람 사이에서, 한 사람이 사망한 후에 다른 사람에게 재산에 관한 권리와 의무의 일체를 이어 주거나, 다른 사람이 사망한 사람으로부터 그 권리와 의무의 일체를 이어받는 일.

국어사전에 나와있는 그대로 가져와본 상속의 의미이다.
이 의미에서 키워드는 "이어받다"일 것이다.

코틀린에서 상속은 쉽게말해 부모/자식 클래스를 만들어 관계를 더욱 끈끈하게 만들어 주는 것이다.
부모클래스에는 있고 자식클래스에는 없지만 부모-자식 간에 클래스를 이어주어 자식클래스에서 부모클래스의 것을 받을 수 있다.

하지만 코틀린은 기본적으로 생략되어 있는 final키워드를 통해 상속을 막아두었다.
무분별한 상속을 막아 예상치 못한 흐름을 방지하기 위함이다.
때문에 상속관계를 만들기 위해서는 open이라는 키워드를 사용해주어야 한다.

아래는 상속을 했을때와 안했을때를 비교해보기 위해 정리해본 코드이다.

메인함수에는 양쪽모두 동일하 코드로 작성되어 있다.
하지만 상속을 했을때의 코드가 좀더 간편해 보인다.
기존의 코드를 보면 Chicken클래스에도 Sparrow클래스에도 Pigeon클래스에도 fly라는 메서드를 포함하고 있다.
굳이 이렇게 반복을 해야할까?
상속을 통해 코드를 조금은 더 간단하게 정리할 수 있다.

chicken, sparrow, pigeon 모두 새라는 공통점을 이용하는 것이다.
Bird라는 클래스를 만들어 fly라는 메서드를 넣고
Chicken, Sparrow, Pigeon클래스를 Bird클래스와 연결해주면 자식클래스는 어제든 부모클래스의 fly메서드에 접근할 수 있다.

profile
앱개발 튜토리얼

0개의 댓글