kotlin 학습 노트 Ⅱ—— 클래스와 객체

2356 단어 kotlin

수업



Kotlin의 클래스는 class 키워드를 사용하여 선언됩니다.

class Runoob {  // class name is Runoob
    // .......
}

생성자를 사용하여 일반 함수처럼 클래스 인스턴스를 생성할 수 있습니다.

val site = Runoob() // in Kotlin ,there don't have new keyword

게터 & 세터



다음 예제에서는 두 개의 변수 변수 lastName과 no를 사용하여 사람 클래스를 정의합니다. lastName은 getter 메서드를 수정하고 no는 setter 메서드를 수정합니다.

class Person {

    var lastName: String = "zhang"
        get() = field.toUpperCase()   // Convert variable to uppercase
        set

    var no: Int = 100
        get() = field                
        set(value) {
            if (value < 10) {      
                field = value
            } else {
                field = -1       
            }
        }

    var heiht: Float = 145.4f
        private set
}

// test
fun main(args: Array<String>) {
    var person: Person = Person()

    person.lastName = "wang"

    println("lastName:${person.lastName}")  // output:lastName: Wang

    person.no = 9
    println("no:${person.no}") // output:no: 9

    person.no = 20
    println("no:${person.no}") // // output:no: -1

}

추상 클래스



추상 멤버는 클래스에 구현이 없습니다.
참고: 개방형 주석으로 추상 클래스나 멤버에 주석을 달 필요가 없습니다.

open class Base {
    open fun f() {}
}

abstract class Derived : Base() {
    override abstract fun f()
}

내부 클래스



내부 클래스는 inner 키워드로 표시됩니다.
내부 클래스는 외부 클래스의 객체에 대한 참조를 가지므로 내부 클래스는 외부 클래스 멤버 속성 및 멤버 함수에 액세스할 수 있습니다.

class Outer {
    private val bar: Int = 1
    var v = "member property"
    /**inner class**/
    inner class Inner {
        fun foo() = bar  // outer class number
        fun innerTest() {
            var o = this@Outer 
            println("inner class can use outer class number,eg:" + o.v)
        }
    }
}

fun main(args: Array<String>) {
    val demo = Outer().Inner().foo()
    println(demo) //   1
    val demo2 = Outer().Inner().innerTest()   
    println(demo2)   //inner class can use outer class number,eg:member property
}

좋은 웹페이지 즐겨찾기