其他分享
首页 > 其他分享> > Kotlin学习笔记-3 --- 类与对象

Kotlin学习笔记-3 --- 类与对象

作者:互联网

文章参考

class KotlinClass {

}
/**
 * 空类
*/
class EmptyClass

类的修饰符

1)classModifier: 类属性修饰符,标示类本身特性

2)accessModifier: 访问权限修饰符

1、构造函数

1)主构造函数

定义

class PersonEntity constructor(name: String, sex: String, age: Int) {
    private val TAG: String = "PersonEntity"

    private var mName: String = name
    private var mSex: String = sex
    private var mAge: Int = age

    init {
        Log.i(TAG, "初始化 : $mName   $mSex   $mAge")
    }

    fun display() {
        Log.i(TAG, "个人信息 : $mName   $mSex   $mAge")
    }
}

使用

val person1 = PersonEntity("Alex", "man", 24)
person1.display()

输出日志
在这里插入图片描述
2)次构造函数

定义

class PersonEntity constructor(name: String) {
    private val TAG: String = "PersonEntity"

    private var mName: String = name
    private var mSex: String = "xxx"
    private var mAge: Int = -1

    init {
        Log.i(TAG, "主构造函数初始化 : $mName   $mSex   $mAge")
    }


    constructor(name: String, sex: String) : this(name) {
        mSex = sex
        Log.i(TAG, "次构造函数(2个参数)初始化 : $mName   $mSex   $mAge")
    }


    constructor(name: String, sex: String, age: Int) : this(name, sex) {
        mAge = age
        Log.i(TAG, "次构造函数(3个参数)初始化 : $mName   $mSex   $mAge")
    }


    fun display() {
        Log.i(TAG, "个人信息 : $mName   $mSex   $mAge")
    }
}

使用

val person1 = PersonEntity("Alex", "man", 24)
person1.display()

日志输出
在这里插入图片描述

2、getter 和 setter

注:Kotlin 中类不能有字段。提供了 Backing Fields(后端变量) 机制,备用字段使用field关键字声明,field 关键词只能用于属性的访问器。

定义

class StudentEntity {
    val TAG: String = "StudentEntity"
    
    var name: String? = ""
        get() = field?.toUpperCase()
        set(value) {
            field = if (TextUtils.isEmpty(value.toString())) {
                "xxx"
            } else {
                value
            }
        }

    var age: Int? = 0
        get() {
            return if (field?.toInt() == 0) {
                -1
            } else {
                field?.toInt()
            }
        }

    fun display() {
        Log.i(TAG, "$name    $age")
    }
}

使用

val student1 = StudentEntity()
student1.name = ""
student1.age = 0
student1.display()
student1.name = "Alex"
student1.age = 24
student1.display()

日志输出
在这里插入图片描述

3、常用类

1)抽象类


父类 abstract

/**
 * 抽象类
 */
abstract class Parent {

    //可继承方法
    open fun p() {}

    //抽象方法
    abstract fun p2()
}

子类

class Child : Parent() {

    override fun p() {
        super.p()
    }

    override fun p2() {
        TODO("Not yet implemented")
    }

}

父类 open

open class Parent {
    //可继承方法
    open fun p() {}
}

子类

class Child : Parent() {

    override fun p() {
        super.p()
    }
}

2)嵌套类

3)内部类

4)内部匿名类

标签:String,Kotlin,笔记,---,TAG,private,mSex,mAge,name
来源: https://blog.csdn.net/weixin_41733225/article/details/116601719