코틀랜드의 귀족 가문 코틀랜드 왕국에는 BaseClass라는 귀족 가문이
있었습니다
이 가문에는 많은 특성과 전통이 있었는데
시간이 지나면서 젊은 세대들인
subclass(서브 클래스)들이 특성들을 상속 받고 그들만의 독특한 특징들을 추가하였습니다
BaseClass 가문의 가주인 Primary 부인은 자녀가 둘 있었는데 Secondary경과 Tertiary아가씨
였습니다
둘 모두 BaseClass 가문의 핵심 가치와 전통을 상속 받았지만 각자의 성향이
더해졌습니다
Secondary경은 활쏘기 실력으로 유명했고 Tertiary아가씨는 감미로운 목소리를 가졌습니다
이를 프로젝트에서 보도록 하겠습니다
새 프로젝트를 만드는데 No Activity(액티비티 없음)을 선택하고
InheritanceApp으로 이름 짓습니다
이번 강의에서는 상속의 개념에 집중하려 하므로 기본적인
Kotlin 코드를 유지하겠습니다
좋습니다
이제 시작해 보겠습니다
애플리케이션이 로딩 되면 새 Kotlin 파일을 만드는데
Start라고 하겠습니다
그냥 Start.kt파일로
모든 것의 시작 점이 될 것입니다
main 함수를 만드는데
애플리케이션의 시작 점입니다
새 Kotlin 클래스/파일을 만드는데
이번에는 클래스입니다
BaseClass라고 이름 짓습니다
이 BaseClass는 다른 클래스들이 상속 받을 클래스입니다
또 다른 클래스를 만드는데
이렇게 Secondary라고
하겠습니다
아니면 BaseClass를 ParentClass로 하고
Secondary 클래스를 ChildClass라고 해도 됩니다
기본적으로 상속은 BaseClass로부터 전해지는 것입니다
특성과 기술이 전해 내려오는데
즉 속성과 함수입니다
그러면 어떻게 확인할 수 있겠습니까
아주 간단합니다
coreValues라는 함수가 있다고 하겠습니다
하는 일은 그 가치가 무엇이든 그저 Core values of house Baseclass라는 글을 출력하는 것
뿐입니다
좋습니다
가치가 무엇인지는 모르지만 이는 중요하지 않습니다
Secondary가 BaseClass를 상속 받고 싶다면 콜론 기호를 사용하고 상속할 클래스 이름을
입력한 뒤 소괄호를 붙이면 되는데
지금 보시는 것처럼 아무 클래스나 상속 받을 수 없으며
클래스에 open 키워드가 있어야 합니다
즉 이 BaseClass를 열어야 한다는 뜻입니다
class 키워드 앞에 open 키워드를 추가해서 열면
오류가 사라질 것입니다
이제 BaseClass의 객체를 생성해 보겠습니다
그러니까
이렇게 val obj1 = BaseClass()라고 하면
이제 obj1.을 이용할 수 있습니다
obj1.coreValues()로 함수를 호출합니다
이 코드를 실행하면 BaseClass의 coreValues를 얻을 수 있습니다
콘솔에 출력 될 것입니다
언제나처럼 저는 첫 번째에 오류가 발생하므로 두 번 실행해야 합니다
그러면 보시는 것처럼 Core values of house Baseclass가 출력 됩니다
이제 다른 객체를 만드는데
Secondary이므로 obj2라고
하겠습니다
이 obj2로 할 것은
이 obj2의 coreValues함수를 호출하겠습니다
즉 이 Secondary클래스의 함수입니다
이제 다시 실행하겠습니다
그러면 Core values of house Baseclass가 두 번 출력 되는 것을 보실 수 있는데
왜 일까요
첫 번째는 BaseClass의 coreValues함수를 호출한 것이고
두 번째는 Secondary 클래스인 obj2의 coreValues를 호출한 것입니다
그런데 이상합니다
Secondary 클래스에는 어떤 함수도 없습니다
아무 것도 정의하지 않았고
이 클래스는 비어있습니다
아무 것도 없습니다
맞기도 하지만 아니기도 합니다
맞습니다 클래스는 비어있지만 BaseClass에서 상속 받고 있기 때문에
BaseClass에 만든 모든 함수는 Secondary클래스 객체에서도 호출될 수
있습니다
그러니까 coreValues가 BaseClass에 있다면 Secondary에도 있는 것입니다
이제 코틀랜드의 귀족 가문으로 돌아와 보면 BaseClass라는 부모가 있는데
coreValues(핵심 가치)를 갖고 있고 그 핵심 가치를 자녀들에게 물려주는데
이 것이 상속의 한 관점입니다
상속에는 다양한 관점이 있는데 하나씩 알아볼 텐데
이제 MainActivity를 사용할 때 더 이해가 갈 것입니다
예를 들어 우리의 MainActivity에서는 어떤 액티비티를 상속 받는 것을 볼 수 있는데
이는 우리의 MainActivity가 그 다른 액티비티처럼 동작할 것이라는 것을 뜻하며
여기에 몇몇 특징을 더하는 것입니다
이 외에도 더 있는데
오버라이딩 함수와 같은 것들이 있으며
다음 강의에서 알아보도록 하겠습니다