【7】kotlin 类成员变量 set get方法
2023-09-27 14:27:38 时间
什么是类成员
-
属性:或者说成员变量类范围内的变量
-
方法:或者说成员函数,类范围内的函数
函数和方法的区别
-
函数强调功能本身,不考虑从属
-
方法的称呼通常是从类的角度出发
-
叫法不同而已,不用纠结
定义方法
-
写法与普通函数完全一致,就是写在类里面
class Hello{
fun sayHello(name: String) = print("Hello,$name")
}
定义属性
-
构造方法中 val/var修饰的都是属性
-
类内部也可以定义属性
//aField 是属性,, notAField就不是了 是构造参数
class Hello2(val aField: Int, notAField: Int) {
//这个也是属性
var anotherField: Float = 3f
}
属性访问控制
属性可以定义getter/setter
属性初始化
- 属性的初始化尽量再构造方法中完成
- 无法再构造方法中完成,尝试降级为局部变量
- 无法降级 var 可以用lateinit 延迟 val 用lazy
- 可空类型谨慎用null 直接初始化 最好是不用哦
相关代码
java 中的get set
package com.yzdzy.kotlin.member;
public class JavaMember {
private int b = 0;
public int getB() {
System.out.println("Java get B");
return b;
}
public void setB(int b) {
System.out.println("Java set B");
this.b = b;
}
}
kotlin 中的相关代码
package com.yzdzy.kotlin.member
class X
//类名不强制一样。
class KotilinMember {
var b = 0;get()
{
print(" Kotilin get B")
return field
}
set(value)
{
print(" Kotilin set B")
field = value
}
val a :Int =1
// get set 已经被默认实现 默认是
var c = 0; public set get
//可以改为private
var d = 0; private set get
//权限控制和java一样
// var f:String 直接这么写会报错
//lateinit 关键字 延迟处理
lateinit var f: String
// val e:X 直接这么写会报错 val 代表final
val e: X by lazy {
print("init X 在调用的时候才会被执行")
X()
}
var cc: String? = null
}
class Hello {
fun sayHello(name: String) = print("Hello,$name")
}
//aField 是属性,, notAField就不是了 是构造参数
class Hello2(val aField: Int, notAField: Int) {
//这个也是属性
var anotherField: Float = 3f
}
fun main() {
println("start")
var a = KotilinMember()
println("init a ")
println(a.b)
println(a.e)
println(a.c)
//不初始化会报错 lateinit property f has not been initialized
// print(a.f)
//两个 !!号 保证不为空。。一个?不确定是否为空
print(a.cc?.length)
print(a.cc!!.length)
//函数强调功能本山。不考虑属性
// 方法的称呼通常是从类的角度出发
}
相关文章
- 一觉醒来Kotlin成了Android的新宠儿【附代码】
- Kotlin 喧嚣过后,Java 程序员未来在哪里
- Kotlin 流 倒计时
- Kotlin Compose ConstrainLayout的使用
- Kotlin Compose 删除条目并刷新数据源 Flow 与Pager3 与 Compose 最佳做法
- Kotlin Compose Intrinsics 获取控件的高度
- Kotlin 启动协程顺序、launch 与async的区别、按照顺序启动协程 等待携程
- Kotlin 与java互相调用 之 java调用Kotlin的函数
- 【2】Kotlin是什么 Kotlin的发展历程 第一个HelloWorld小程序