본문 바로가기
security/코틀린

Kotlin - 12. 상속

by aristia 2020. 7. 29.

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

댓글