Kotlin学习(6)-类和对象之类成员介绍

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的静态属性功能;
  • 类加载时候会运行伴生对象代码块。

你可能感兴趣的:(Kotlin,Android学习中的笔记,android,kotlin)