首页 > 其他分享 >Android-Kotlin-GET/SET 方法的使用

Android-Kotlin-GET/SET 方法的使用

时间:2023-06-19 15:04:02浏览次数:40  
标签:SET name GET Kotlin sex fun student var String


上篇博客我们讲了kotlin的继承,今天接着往下讲解kotlin的get/set方法的使用。

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
}


标签:SET,name,GET,Kotlin,sex,fun,student,var,String
From: https://blog.51cto.com/u_16163510/6513793

相关文章

  • 【随笔二】Android-kotlin-实现简单计算器功能
    上一篇博客Android-kotlin-配置/入门配置好了AndroidStudioKotlin的环境;今天做一个简单的demo实战—实现一个简单的计算器功能1.选择包名,然后右键:2.选择Class类型,会有class:3.创建CounterClass:packagecn.kotlin.kotlin_oop02/***加减乘除计算的calss*varnumber1:Double......
  • Android-kotlin 抽象类与多态的表现
    上篇博文讲了kotlin语言中get/set方法的使用,今天来讲一下kotlin中的抽象类与多态的表现选择包名,然后右键:选择Class类型,会有class:选择File类型,不会自动有class:目录结构:定义描述抽象类Person人类:packagecn.kotlin.kotlin_oop05/***抽象类用abstract修饰*描述:人类的抽象......
  • ANDROID-KOTLIN-代理和委托
    代理和委托,在生活中的案例有很多:例如:小明工作很忙,需要办理银行卡,此时他委托给>>小李去给自己办理银行卡,小李来到办理中心把自己的身份证/小李的身份证,给办理人员,说是小明委托我,给他办理银行卡的在Kotlin的代理委托是使用by关键字来处理定义描述寻找的接口,规范寻找的功能的标准:pack......
  • 2023-06-19 API `getMenuButtonBoundingClientRect` is not yet implemented
    前言:想使用该Api来获取设备导航栏高度,结果报错了:API`getMenuButtonBoundingClientRect`isnotyetimplemented尚未实现API`getMenuButtonBoundingClientRect`原因:该Api不支持在app端或者h5端使用。平台兼容如下: AppH5微信小程序支付宝小程序百度小程序抖音小程序飞书小......
  • Android 上的 Kotlin Flow(数据流), 由浅入深
    在协程中,Flow是一种可以顺序发出多个值的类型,而不是只返回单个值的挂起函数。例如,你可以使用Flow从数据库接收实时更新。数据流建立在协程之上,可以提供多个值。Flow在概念上是可以异步计算的数据流。发出的值必须是同一类型。例如,Flow<Int>是一个发出整数值的流。数据流与生......
  • 【Kotlin】史上超强二合一,Kotlin从入门到精通+高级Kotlin强化实战(附Demo)
    前言Kotlin作为谷歌官方支持的编程语言,目前,不少公司的Android开发工程师岗位表示要有Kotlin基础,同时这也让Kotlin成为了很多人的学习对象。而Kotlin作为Android开发的首选语言,为开发者提供了大量的语法糖和技巧,空指针异常情况也得到了明显改善,使用起来更加顺手,能让开发者更专注于......
  • 十四、集合set(了解)
    十四、集合set(了解)集合和字典一样都是使用大括号。但集合没有value,相当于只有字典的key。字符串,列表和元组属于序列,是有序的,但集合是无序的,所以不能通过下标来查询和修改元素。再总结一下:整数,字符串,元组是不可变数据类型(整数和字符串改变值的话是在内存里开辟新的空间来存......
  • 记录一次Java Convert Kotlin造成的空指针异常
    不知道大家在使用Kotlin进行编码的时候,有没有直接使用AS的Code->ConvertJavaFile2KotlinFile这个功能,此功能在日常使用中还是比较实用的,可以帮助我们将老的Java或者复制的Java代码一键转换成Kotlin代码,最近在使用此功能的时候竟然遇到了空指针的Crash,在此记录一下,顺便也给大......
  • Kotlin系列之不知道约定,可能有些代码你看不懂
    约定是kotlin语法当中必不可少的一部分,可以说kotlin语法的整洁,约定在里面扮演着不可缺少的角色,无论是在运算,比较,解构或者调用lanmda表达式上,都能看见约定的身影。二元运算符的约定java8里面的时间api大家一定不陌生,如果有不熟悉的可以看下我的这篇文章JAVA8中新的日期时间处理方式......
  • kotlin 和 r8 的量子纠缠 | 类加载机制偷鸡
    前言戏接上文,kotlin升级没想到啊还有一个大坑。我们之前说了我们使用的agp版本是7.0.3,在这个版本的R8竟然会出现kotlin混淆的bug。断更一个月,不更文的一个原因就是因为最近感觉太菜了,并没有文章素材了。问题排查接下来还是一点点进行问题分析,我们先从kotlin元数据开始讲这个问题。......