12. 상속
부모로부터 설명서를 물려받는 것
------------------------------------------------------------------------
상속을 받지 않는 경우의 불편함
이와 같이 상속을 하지 않고 같은 기능을 계속 적어주면 불편함이 생긴다.
그래서 상속 기능을 사용하는 것이다.
------------------------------------------------------------------------
open(1)
- 클래스를 선언할 때, 기본적으로 앞에 private가 선언되어 있다.
그래서 상속받을 때 에러가 발생한다.
- open을 사용하여 private를 지워주는 역할을 한다.
클래스 앞에 open을 써서 암묵적으로 써져있는 private를 지웠다.
------------------------------------------------------------------------
상속 받는 방법
class 자식 클래스 이름 : 부모 클래스 이름()
이렇게 : 부모 클래스() 를 써줌으로써 상속을 받을 수 있다.
이렇게 하면 분명히 자식 클래스의 객체인데,
부모 클래스의 함수를 사용할 수 있는 것을 확인할 수 있다.
그럼 이렇게 부모 클래스의 함수를 상속받아서 출력되는 것을 확인할 수 있다.
------------------------------------------------------------------------
open(2)
- 함수에도 앞에 private가 암묵적으로 붙어있다.
- 이 private를 지워서 접근할 수 있도록 open을 사용한다.
함수인 drive() 앞에도 open을 적어준다.
------------------------------------------------------------------------
override(1)
- 부모 클래스의 함수를 덮어 쓴 것
- 부모 클래스의 함수를 변형하고자 할 때 사용한다.
마우스 오른쪽 클릭하면 Generate가 있다.
이걸 클릭하면 Override Methods가 나온다.
다시 이것을 클릭하면 Override Members가 나온다.
여기서 override 할 수 있는 것이 나오는데,
앞에서 drive()를 open으로 접근할 수 있게 해주었으므로
이것이 나오는 것을 확인할 수 있다.
그럼 이렇게 나타난다.
굳이 오른쪽 클릭하지 않아도 되고, override를 앞에 써주어도 괜찮다.
여기서 super이 의미하는 것은 부모이다.
부모로부터 상속받은 기능을 변형해본다.
"빨리 운전합니다." 가 출력되도록 하는 것이다.
메인 함수에 그대로 superCar이라는 객체에서 dirve()를 호출한다.
그럼 아까와 다르게 SuperCar에 적어주었던 내용이 출력되는 것을 확인할 수 있다.
------------------------------------------------------------------------
override(2)
아니면 자료형 String을 함수에 적어주고,
return을 사용할 수도 있다.
그래서 SuperCar에서 super을 사용하면서 이렇게 변형할 수 있다.
즉, 부모의 기능을 사용하면서 자식의 기능을 추가하는 것이다.
메인 함수에서 다음과 같이 출력을 하면 된다.
그럼 다음과 같이 변형된 내용이 출력되는 것을 확인할 수 있다.
'security > 코틀린' 카테고리의 다른 글
Kotlin - 14. 제너릭 (0) | 2020.07.29 |
---|---|
Kotlin - 13. 인터페이스 (0) | 2020.07.29 |
Kotlin - 11. 접근 제어 (0) | 2020.07.29 |
Kotlin - 10. 클래스 (0) | 2020.07.29 |
Kotlin - 09. 반복문 (0) | 2020.07.28 |
댓글