처음으로 Kotlin: Kotlin의 학급 특징을 정리했습니다.
10191 단어 Kotlin
Kotlin 클래스의 특징
Kotlin 클래스에는 다음과 같은 특징이 있습니다.마음대로 열거해 보세요.
new 키워드가 없으면 실례화할 수 있습니다.
new에 키워드를 실례화하면 오류가 발생합니다
lateinit 키워드를 추가하면 나중에 초기화할 수 있습니다.이런 상황에서, 그것은 반드시mutable이어야 한다.즉, 가변 변수 키워드 var에서 선언해야 합니다
lazy 키워드를 추가한 후에도 초기화할 수 있습니다.이런 상황에서, 그것은 반드시immutable이어야 한다.즉, 변하지 않는 변수 키워드val로 설명해야 합니다
fun 키워드를 추가하여 정의합니다
init 키워드가 있는 코드 블록은 구조 함수의 정의입니다.즉, 인스턴스에서 실행됩니다
지연 초기화
잠시 후 초기화 지연 초기화는lateinit 키워드와lazy 키워드를 포함합니다.
lateinit 키워드에 대해mutable이기 때문에 변수 키워드 var에서 설명해야 합니다.초기화 후 변경할 수 있다는 뜻이다.
lazy 키워드에 대해immutable이기 때문에 변하지 않는 변수 키워드val로 설명해야 합니다.초기화 후에는 변경할 수 없다는 뜻이다.
지연 초기화 코드 예
class LateinitAndLazy {
lateinit var lateinitString: String
val lazyString: String by lazy {
val valueOfString = "This train consists 12 cars."
valueOfString
}
fun lateinitStringLength() {
lateinitString =
"Boardingn locations are indicated by white circles and No.1 through 7."
val length = lateinitString.length
println("Length of 'lateinitString' is $length" )
lateinitString = "We are soon making brief stop at Bentencho."
}
fun lazyStringLength() {
val length = lazyString.length
println("Length of 'lazyString' is $length" )
}
}
fun main( args: Array<String> ) {
LateinitAndLazy().lateinitStringLength()
LateinitAndLazy().lazyStringLength()
}
지연 초기화 코드 예시 실행 결과Length of 'lateinitString' is 68
Length of 'lazyString' is 28
상속류
클래스가 부족합니다. 즉, 어떤 내용도 지정하지 않은 상태에서 성명하면final 클래스로 계승할 수 없습니다.
오픈 키워드를 명확하게 추가하여 정의합니다. 정의된 클래스는 계승을 허용합니다.
클래스 상속 코드 예
open class Employee( name: String, age: Int ) {
val name = name
val age = age
}
class Company: Employee( "Jhonson", 58 )
fun main(args: Array<String>) {
println(
"Name is ${Company().name} and " +
"Age is ${Company().age}."
)
}
클래스 계승 코드 예시의 실행 결과Name is Jhonson and Age is 58.
open 키워드를 추가하지 않았을 때의 컴파일 오류prog.kt:6:16: error: this type is final, so it cannot be inherited from
class Company: Employee( "Jhonson", 58 )
^
내부 클래스 정의
내부 클래스의 정의에 inner 키워드를 추가하지 않으면 내부 클래스를 포함하는 외부 클래스의 구성원에 접근할 때 컴파일 오류가 발생합니다.
내부 클래스 코드 예
class Outer {
private val outer: String = "Outerクラス"
class Child {
fun child() = "Childクラス"
fun errorChild() = outer //コンパイルエラー
}
inner class Inner {
fun innerFoo() = outer
}
}
fun main(args: Array<String>) {
println( Outer.Child().child() )
println( Outer().Inner().innerFoo() )
}
내부 클래스 코드 예시의 실행 결과Childクラス
Outerクラス
컴파일 오류innerClass.kt:6:24: error: unresolved reference: outer
fun errorChild() = outer //コンパイルエラー
^
인스턴스 처리 정의
실례화 클래스에서 실행되는 동작은 init 키워드 블록에 명확하게 설명되어 있습니다.
init 키워드를 사용한 코드 예시
class Baa {
val baa: Float
init {
baa = 3.14f
}
fun dispBaa() { println( "baa is $baa!" ) }
}
fun main( args: Array<String> ) {
Baa().dispBaa()
}
init 키워드 코드 예시 실행 결과baa is 3.14!
Visual Studio 코드를 좋아합니다.
나는 마크다운의 코드 원본 코드 하이라이트를 좋아하지 않는다.저는 개인적으로 Visual Studio 코드의 배경색과 소스 코드 하이라이트를 좋아합니다.
LateinitAndLazy.kt : Visual Stduio Code on Windows10 Pro
Compile and Execute: Windows PowerShell on Windows10 Pro
innerClass.kt : Visual Stduio Code on Windows10 Pro
Compile and Execute: Windows PowerShell on Windows10 Pro
Reference
이 문제에 관하여(처음으로 Kotlin: Kotlin의 학급 특징을 정리했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teruroom/items/8d1e5b5630b1db426c22텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)