Kotlin学习(6)-类和对象之类成员介绍
程序员文章站
2024-03-20 22:10:46
...
Kotlin的类成员包括:成员属性,成员方法,伴生对象和静态属性。
1.成员属性
kotlin对类成员属性声明采取了一种简洁的方式:属性字段和构造函数的入参一一对应,那么抛弃Java中那种this.属性和get/set的操作,考虑让编译器自动对属性进行命名和赋值。这样就有了下面的kotlin写法:
class Person(var age:Int,val sex:Int = 0) {
}
如果某个字段不是入参同名属性,需要在类内部显示声明该属性字段。
class Person(var age: Int, val sex: Int = 0) {
//新增字段sexAlias
var sexAlias: String
init {
sexAlias = if (sex == 0) "阳" else "阴"
}
}
//外部调用sexAlias
var person = Personn(20,0)
println("------> sexAlias = ${person.sexAlias}")
2.成员方法
方法的定义使用关键字"fun",方法返回类型使用“:+数据类型”跟在方法名后,如下示例:
class Person(var age: Int, val sex: Int = 0) {
var sexAlias: String
init {
sexAlias = if (sex == 0) "阳" else "阴"
}
fun getResponse(name: String): String {
return "你好!$name,我今年${age}岁了"
}
}
//调用方法getResponse
var person = Person(20,0)
var response = person.getResponse("小明")
println("-------> response:${response}")
3.伴生对象
伴生对象使用关键字“companion”,它是用来表示类内部的对象声明(思考之前调用Person中属性都必须先声明实例化Person才可以)。
有的书中写到可以将其与Java中的staic属性对比,的确kotlin提供的伴生对象在行为上与Java的static一样,甚至在JVM平台使用
注解@JvmStatic可以将伴生对象生成为真正的静态方法或字段,但伴生对象在运行时候仍然是真实对象的实例成员。
class Person(var age: Int, val sex: Int = 0) {
var sexAlias: String
init {
sexAlias = if (sex == 0) "阳" else "阴"
}
fun getResponse(name: String): String {
return "你好!$name,我今年${age}岁了"
}
companion object Strength {
fun strengthIsStrong(sexAlias: String): String {
var answer: String = when (sexAlias) {
"阳" -> "一般男性力气更大"
"阴" -> "一般女性力气较小"
else -> "无法比较"
}
return answer
}
}
}
//调用伴生对象
var result = Person.strengthIsStrong("阳")
println("------> result = ${result}")
伴生对象的初始化是在相应的类被加载(解析)时,这一点也与Java中的staic{}相同。
4.静态属性
同样在伴生对象中,我们可以定义伴生对象的相关属性。
class Person(var age: Int, val sex: Int = 0) {
var sexAlias: String
init {
sexAlias = if (sex == 0) "阳" else "阴"
}
fun getResponse(name: String): String {
return "你好!$name,我今年${age}岁了"
}
companion object Strength {
//定义伴生对象属性
val MALE = 0
val FEMAL = 1
val UNKNOWN = -1
fun strengthIsStrong(sexAlias: String): Int {
var answer: Int = when (sexAlias) {
"阳", "男" -> MALE
"阴", "女" -> FEMAL
else -> UNKNOWN
}
return answer
}
}
}
5.总结
- 类中包括成员属性,成员方法,伴生对象;
- kotlin中成员属性主要时删除了冗余的同名属性声明语句,删除了冗余的同名属性赋值语句,删除了冗余的get/set方法;
- 非入参属性需要在类内部显示声明;
- 伴生对象使用关键字companion修饰;
- 利用伴生对象可以实现类似Java中static的静态属性功能;
- 类加载时候会运行伴生对象代码块。
上一篇: @HystrixCommand使用
下一篇: java 中使用excl与设置单元格格式