좋습니다
BaseClass가문에 추가할 더 많은 이야기를 들려드리겠습니다
BaseClass가문은 인터페이스도 사용할 수 있는데 어떻게 하는지 보여드리겠습니다
이 두 가지 옵션이 있었습니다
가문에 궁술에 매우 뛰어난 이들이 있었고
매우 뛰어난 음유 시인들이 있었다고
하겠습니다
음악을 잘 합니다
둘 모두 잘 하는 자손을 원한다면
궁술과 음악을 모두 잘 한다면
상속을 사용할 수 없습니다
대신에 사용해야 하는 것은 인터페이스로 활을 쏘는 것을 매우 잘 하면서
노래도 매우 잘 부르는 사람이 될 수 있습니다
이 남자는 활을 쏘면서 노래를 하는데 이 것이 우리가 Kotlin에서 인터페이스를 사용하여 얻을 수 있는
것입니다
Secondary와 Tertiary가 있는 예제로 돌아와서
OffSpring라는 다른 클래스를 만들겠습니다
좋습니다
새 Kotlin 클래스를 추가하고
이렇게 OffSpring이라고 하겠습니다
이 클래스는 Secondary를 상속 받겠습니다
그러므로 이는 우리 기사나 궁수의 자식이 될 것입니다
이렇게 되려면 Secondary 또한 열린 클래스가
되어야 합니다
그렇지 않으면 상속을 받지 못합니다
이제 Secondary를 상속 받을 수 있습니다
이제 OffSpring은
BaseClass가문 기사의 자손입니다
이제 다음으로 할 것은 자손이 기사로부터 훌륭한 궁수가 되는 가르침을
받는 것 뿐 아니라 노래와 악기 연주 기술이 매우 뛰어난 고모로부터도 가르침을
받게 할 것입니다
이 두 기술과 특성을 모두 물려주려면 인터페이스를 사용해야 합니다
이제 새로운 인터페이스를 여기에서 추가하겠습니다
예제에서 인터페이스를 처음 사용합니다
첫 번째는 Archery입니다
Archery라는 인터페이스를 만듭니다
이 인터페이스 안에 archery라는 함수를 만들고
하는 일은 Secondary경의 궁술 실력을 출력합니다
또 다른 인터페이스를 만드는데
이 인터페이스는 Singer라고 합니다
Bard나 다른 이름으로 하셔도 되지만 저는 Singer로 하겠습니다
이 인터페이스는 sing이라는 함수만 가질 것입니다
그러므로 Tertiary부인의 노래 실력이 됩니다
아까 이야기했던 Tertiary부인은
노래를 부르고 악기를 다루는데 매우 뛰어나며
노래하는 법을 가르칩니다
인터페이스를 적용하면 말입니다
기술을 배우고
가르침을 받아들입니다
그러면 OffSpring이 이 함수를 사용할 수 있습니다
어떻게 할 수 있을까요
OffSpring에 추가하면 되는데 OffSpring의 아버지인 Secondary상속
뒤에 추가합니다
콤마 기호를 추가하고 구현할 인터페이스를 입력합니다
보시는 것처럼 Archery와 Singer를 구현하고 있습니다
지금까지 우리 프로그램의 초기 단계에서는 인터페이스의 구현이 필요하지 않았지만
이후 강의에서는 구현할 것이므로
필요할 때 준비가 되어 있으시기를 바랍니다
기본적으로 이를 통해 하는 것은 너의 기술 즉, 함수나 속성 등을
사용하겠다는 것입니다
좋습니다
이제 Archery를 사용하겠습니다
이제 자손이 성장할 수 있습니다
그러면 archery를 오버라이딩 하겠습니다
우선 super 함수를 호출할 것인데 이는 기본적으로 이 함수를 실행합니다
인터페이스이기 때문에 open 키워드를 사용할 필요가 없으며
인터페이스를 사용하려면 함수를 구현하고 오버라이딩 해야 합니다
이 것이 인터페이스입니다
OffSpring에서 archery를 오버라이딩 하며 super 함수를 호출하고 있는데
반드시 그럴 필요는 없지만 할 수는 있습니다
그러므로 주석 처리하고 우리의 것을 구현하겠습니다
그냥 두셔도 됩니다
그러면
우리의 코드를 구현할 수 있으므로
자손의 향상된 궁술이라고 출력합니다
왜냐하면 Secondary 아버지에게서도 배웠지만 살면서 자신만의 기술도
터득했기 때문입니다
삶을 살면서 엄청나게 뛰어난 궁수가 되었습니다
또한 Tertiary고모에게서 노래도 배웠는데 실력이 매우 늘어 세상에서 가장 뛰어난
가수가 되었기 때문에
자손의 향상된 노래 실력이라고 출력합니다
좋습니다 이제 Start.kt에서 아무 함수나 호출해 보겠습니다
다른 객체들은 모두 지우고
OffSpring객체만 이용하겠습니다
var를 입력하고 이 객체는
frank라고 하고 자료형은
OffSpring입니다
이렇게
말입니다 frank는 archery도 있고
role도 있으며
coreValues도 있고
sing도
있습니다 보시는 것처럼 frank는 OffSpring인데
기본적으로 Secondary를 상속 받고 이는 BaseClass를 상속 받고 있으므로
모든 BaseClass의 기술과 Secondary의 기술 그리고 아버지와 고모에게서 배운 기술을
갖고 있습니다
여기로 돌아와서 실행 시켜서 frank가 할 수 있는 모든 일을 보겠습니다
Secondary경의 궁술과 자손이 발전시킨 궁술을 갖고
Knight of the House of BaseClass가
출력 되었으므로 가문의 기사이고
BaseClass가문의 핵심 가치도 갖고 있는데 이 함수입니다
그리고 노래도 부를 수 있습니다
고모인 Tertiary부인에게 배웠는데 Tertiary부인보다 더 뛰어난
가수입니다
제가 한 가지 깨달은 것이 있는데 Archery입니다
인터페이스는 Archery가 아니라
Archer여야 합니다
그러므로 Archery가 아닌 Archer로 바꾸고
여기도 Archery를 지우고 Archer로 바꿉니다
함수는 여전히 archery지만 인터페이스는 Archer입니다
보다 정확히 하려면 〈Archer〉.archery라고 해야 하지만
꼭 그럴 필요는 없습니다
그냥 이 것을 보면
기본적으로 archer 인터페이스의 함수인 archery를 호출한다는 뜻이라고 아시면
됩니다
그러면 인터페이스란 무엇일까요
이는 아주 오랜 질문으로 다음 비디오에서 대답해 드리겠습니다