open class Foo { open val x: Int get() { ... } } class Bar1 : Foo() { override val x: Int = ... }
val x : Int get() {... } getter맞지? 왜 x에 함수가 붙어있냐 대입으로 넣은것도아니고
val x : Int = get() {...} 이러면 컴파일 오류나는데
대충 실행해보니까 x를 get이라는 함수의 리턴값으로 초기화하는거같은데 맞음? 왜 저런식으로 쓰지?
open class Foo {
open val x: Int get() { ... }
}
초기화 아님
getter 안에 println 넣고 막 써보면 이해 쉬움
써보긴했는데 리턴안쓰면 에러나던데 결국엔 리턴값으로 x 초기화 시키는거 아님? - dc App
아님
https://ideone.com/9A53j3
자바스크립트 할때 이런거 있었던거같은데 클로저였나? 그거임?
감사감사 ideone.com 저장해놔야겟다
컴파일 에러 잡는 건
https://try.kotlinlang.org/
가 더 쉬움
try.코틀린은 return안해도 0자동으로 넣어주네 intellij 쓰고있는데 여기선 에러뜸
자바 vo에 접근할때 프로퍼티에 직접 접근 안하고 getter setter 만들어서 하잖아 코틀린은 저렇게 씀
한가지 덧붙이면 게터나 세터함수 안에 프로퍼티값으로 field를 쓰면됨
val a: int set(value) {field = value} 이렇게
그러면 인스턴스.a = 값 이렇게 했을시 a 밑에있는 set 함수가 실행됨
필드 오버라이딩도 가능한데 val에서 var은 가능하지만 그 반대는 안됨
자바안하고 코틀린으로 객체지향 처음해봐서 ㅋㅋ 다들 자세히알려주네 감사감사
코틀린 하기전에 자바 하는게 좋아 코틀린에서 자바api를 사용할 수 있거든
api 필요한거 있으면 그때그때 찾아보지뭐 ㅋㅋㅋ 일단 모바일겜 한번 만들어보고싶음