코린이 탈출기

chapter 7.3 - 코틀린 문법 + 객체지향개념 (2) - 상속 개념 이해, 활용하기 본문

인터넷 강의/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기

chapter 7.3 - 코틀린 문법 + 객체지향개념 (2) - 상속 개념 이해, 활용하기

50HEE 2021. 5. 17. 20:51

상속 - inheritance

상속은 객체지향의 큰 특징 중 하나입니다.

일상 속에서 사용하는 상속이라는 개념과 비슷하면서도 다른 의미를 가집니다.

일반적인 상속으로는 부모가 자식에게 상속하는 것을 의미합니다.

이와 유사하게 코틀린에서는 클래스 간의 부모와 자식 관계에서 내용물(멤버 변수 + 함수)을 물려주고 받는 행위를 의미합니다. 

하지만 다른 점은 코틀린에서는 자식 클래스가 부모 클래스를 지정해서 그 클래스의 멤버 변수와 함수를 자식이 그대로 가져다 사용하거나, 일부 수정하여 사용하는 것을 말합니다.

 

 

 

문법 상으로는 클래스를 만들 때 나의 부모가 누구인지를 지정해줍니다.

코드로 표현하자면 'class 클래스 명 : 부모 클래스(어떤 생상자 기반인 것인지 설정)'라고 작성합니다.

지난 코드를 사용하여 예시를 보여드리겠습니다.

 

 

 

chapter 6에서 작성한 코드를 참고하겠습니다. 아래의 플러그인은 만들었던 위치를 알려주기 위해 넣은 것입니다.

 

2021.05.11 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 6.5 - 리스트뷰 만들기 (4) - 실제 데이터 리스트뷰에 반영하기 - getView 함수 수정

 

코드를 작성하는 곳은 StudentAdapter.kt입니다.

 

대부분의 상속에서 부모 클래스의 생성자 중 기본 생성자를 기반으로 상속을 받습니다.

앞에 설명하였 듯이 생성자란 괄호 ( )를 의미합니다.

여기서 기본 생성자란 괄호 안에 어떤 생성자를 기반으로 받을 것인지를 지정하지 않은 비어있는 생성자를 의미합니다.

 

하지만 일부 부모 클래스의 경우에는 기본 생성자를 지원하지 않는 경우도 있습니다.

 

2021.05.10 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 6.3 - 리스트뷰 만들기 (2) - Adapter 클래스 뼈대 작업

 

이전에는 에러가 발생해도 간단하게 설명하고 넘어갔습니다. 이번에는 상속의 개념과 함께 자세하게 설명하겠습니다.

 

위의 ArrayAdapter의 경우에는 기본 생성자가 지원되지 않습니다. 그렇게 때문에 생성자를 채워 넣어주어야 합니다.

에러가 발생한 부분에 마우스만 올려 놓아도 어떻게 작성해야 하는 것인지를 보여줍니다.

그중에 원하는 것으로 생성자의 형태에 맞춰서 넣어주면 됩니다.

위의 그림에 있는 코드의 경우에는 원하는 생성자를 넣기 위해 StudentAdapter에 주 생성자(괄호)를 만들어서 사용하였습니다.

생성자의 작성은 이전 챕터에서 다루었듯이 변수로 설정하여 작성하였습니다.

원하는 변수를 설정하였으므로 부모 클래스의 생성자에 넣어주면 됩니다. 13 ~ 15번 줄과 같습니다.

 

다시 정리하여 설명을 하면, 대부분의 상속에서 부모 클래스의 생성자는 기본 생성자를 주로 사용하지만 일부 부모 클래스의 경우에는 기본 생성자가 지원이 안 되는 경우도 있습니다.

그럴 경우에는 자식 클래스의 주 생성자를 통해서 받아낸 자료를 부모에게 전달하여 사용하면 에러가 사라집니다.

코드를 작성하다 보면 이러한 경우는 ArrayAdapter를 상속받을 때 자주 만나게 되는 상황입니다.

 

추가로 설명을 하자면 위 코드의 21번 줄의 경우에는 override를 통해 getView 함수를 받아왔습니다.

간단하게 설명하면 부모가 물려준 getView라는 함수의 내용을 수정하고 싶을 경우 override를 사용하여 위와 같이 사용하면 됩니다.

즉, override는 상속받은 함수의 내용을 가져다가 수정하고 싶을 경우 작성하는 함수가 됩니다.

Comments