Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[모의면접] 확장 함수 #3

Open
kssumin opened this issue Jan 5, 2025 · 3 comments
Open

[모의면접] 확장 함수 #3

kssumin opened this issue Jan 5, 2025 · 3 comments

Comments

@kssumin
Copy link
Contributor

kssumin commented Jan 5, 2025

관련 챕터

2장 코틀린 기초

면접 질문

  1. 확장 함수를 오버라이드 했을 경우 다형성과 동일한 결과값을 보여주나요?

코드 관련 질문 (선택)

fun View.showOff() = println("view")
fun Button.showOff() = println("button")


// 결과값은?
val view : View = Button()
// ViewExtentsions.showOff()
view.showOff() 
@kssumin
Copy link
Contributor Author

kssumin commented Jan 5, 2025

@ajang369
오버라이딩은 동적 타입으로 결정이 되는데
확장함수는 정적 타입으로 어떤 함수를 호출할 지 결정하기 때문에

Q : 왜 확장함수는 정적 타입으로 결정을 하는가?
확장 함수가 클래스 밖에서 선언을 해서
해당 클래스의 맴버 메서드가 아니기 때문에
정적으로 결정할 것 같다.

@kssumin
Copy link
Contributor Author

kssumin commented Jan 5, 2025

@rootachieve
View의 확장함수가 실행된다.

확장함수는 클래스 외부에서 선언이 된 것이라서
클래스의 상속 계층을 고려하지 않고
정적 타입으로 판단한다.

@kssumin
Copy link
Contributor Author

kssumin commented Jan 5, 2025

왜 확장함수는 정적 타입으로 결정을 하는가? 에 대한 의도한 답변

수신 객체를 기준으로 정적 메서드를 만들어서 정적 타입으로 결정이 된다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant