2017-10-13 3 views
4

나는 Kotlin을 사용하여 TeamCity와 인터페이스하려고합니다.왜이 Kotlin Object는 그 자체에서 상속받을 수 있습니까?

프로젝트를 Kotlin (.xml)로 변환하면 모든 구성을 설정할 수있는 Project.kt라는 파일이 생깁니다. 편집없이 광산으로

은 다음과 같습니다

object Project : Project(/* Some Function Literal with Receiver */) 

이 원형 상속처럼 보인다? 나가 생략하고있는 수입품이있다, 그러나 저것은 저것을 중대하게 만들지 않을 텐데? 파일에 나타나는 이름에 따라 이름을 다른 방식으로 해석 할 수 있습니까?

내 마음이 같은 오브젝트 특성을 해석한다 :

  • 객체 싱글을위한 = 개체 선언.
  • 프로젝트 (첫 번째 발생) = 개체의 이름입니다.
  • : = 상속 표시.
  • 프로젝트 (두 번째 발생) = 상속 할 기본 클래스.
  • () = 기본 클래스에 대한 생성자 호출.

이 원형 상속입니까, 아니면 Kotlin에 대해 큰 것을 놓쳤습니까? herehere으로 보았습니다. 내 대답을 찾을 수 없습니다.

답변

7

자격을 갖춘 클래스 other.Projectmy.Project을 가정하면 다른 패키지에 동일한 이름으로 정의 된 두 개의 서로 다른 클래스가 있습니다.

my.Project은 싱글 톤으로 정의되었으므로 확장 할 수없고 실제 기본 클래스는 other.Project입니다. 코 틀린은 차별화 할만큼 충분히 똑똑합니다. 클래스 선언을 사용하여 동일한 작업을 수행하려는 경우 순환 상속을 얻습니다.

명시 적으로 싱글 톤에서 확장하려고 시도 할 수도 있지만 오류 은 싱글 톤에서 상속받을 수 없습니다. 그래서 기본적으로 이것은 올바른 클래스를 가져온 경우에만 잘 작동합니다.

+0

그건 다소 영리한 컴파일러입니다! – ZoSal

관련 문제