Android-Kotlin-set/get方法的使用


Student.kt

package cn.kotlin.kotlin_oop04

open class Person {
   open var personName:String = "我是父類的名字"
}

class Student: Person() {

    /**
     * name用private私有修飾,外界其他地方不准訪問,隱藏細節
     * name提供set get 方法 對外暴露功能
     * 對細節隱藏,只暴露自定義暴露的東東,就是屬於封裝的體現
     */
     private var name:String = ""

     fun getName() : String{
        return name
     }

     fun setName(name:String) {
         this.name = name
     }


    /**
     * age用private私有修飾,外界其他地方不准訪問,隱藏細節
     * age提供set get 方法 對外暴露功能
     * 對細節隱藏,只暴露自定義暴露的東東,就是屬於封裝的體現
     */
    private var age:Int = 0

    fun getAge() : Int{
        return age
    }

    fun setAge(value: Int) {
        if (value <0 || value > 150) {
            println("傳入的${age}值不規范 出現異常 請檢查代碼")
            return
        }
        age = value
    }


    /**
     * sex用private私有修飾,外界其他地方不准訪問,隱藏細節
     * sex提供set get 方法 對外暴露功能
     * 對細節隱藏,只暴露自定義暴露的東東,就是屬於封裝的體現
     */
    private var sex:String = ""

    fun getSex() : String {
        return sex
    }

    fun setSex(sex : String) {
        if ("男".equals(sex) || "女".equals(sex)) {
            this.sex = sex
            return
        }
        println("傳入的${sex}值不規范 出現異常 請檢查代碼")
    }

    /**
     * 獲取父類Person的personName
     */
    override var personName: String
        get() = super.personName
        set(value) {personName = value}
}

/**
 * main測試方法
 */
fun main(args: Array<String>) {
    var student = Student()

    // 設置所以屬性信息
    setAllData(student)

    // 打印所以屬性信息
    toAllInfoShow(student)
}

/**
 * 設置所以屬性信息
 */
fun setAllData(student: Student) {
    student.setName("豬小明")
    student.setAge(99)
    student.setSex("男")
}

/**
 * 打印所以屬性信息
 */
fun toAllInfoShow(student : Student) {
   println("name:${student.getName()}, age:${student.getAge()}, sex:${student.getSex()}")
}

 


 

 

在Kotlin中,getter和setter是可選的,如果你沒有在代碼中創建它們,它是會默認自動生成,是看不到的:

class Account {
    var name: String = "" 
    var age: Int = 0
    var balance: Double = 0.0
}

以上的代碼,就算不寫getter/setter,默認也會生成getter和setter,例如:

class Account {
    var name: String = "" 
    var age: Int = 0
    var balance: Double = 0.0
   
    // 這種set和get方法不推薦在代碼中自己手動去寫
    set(vaule){
        field = value 
    }
    get() = field
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM