0
点赞
收藏
分享

微信扫一扫

kotlin-5、类与对象

Mhhao 2021-09-28 阅读 55
Android

创建空类

// 默认就是public
class Empty
构造函数
// public final class Person 默认就是这样的,不能被继承,  可以加open就可以被人家继承了
open class Person(id: Int) // 主构造
{

    // 次构造
    constructor(id: Int, name: String) : this(id) {

    }

    // 次构造
    constructor(id: Int, sex: Char) : this(id) {

    }

    // 次构造
    constructor() : this(787) {

    }

}
调用构造函数
// TODO 类与对象
fun main() {

    val person = Person() // 次构造

    val person2 = Person(6465) // 主构造


    Person(464, "D") // 次构造
    Person(464, 'Man') // 次构造
}
继承
class Student(id: Int) : // Person() // 次构造
                Person(id) // 主构造了
{
    // 在Kotlin 全部都是没有默认值的

    // 在Java 成员有默认值,但是方法内部没有默认值

    // lateinit 懒加载  没有赋值 就不能使用,否则报错
    lateinit var name : String
    var age: Int = 0
}
接口
// 接口默认都是 open
interface Callback {

    fun callbackMethod() : Boolean

}
实现接口
// 默认是 public final class Person 不能被人家继承的      abstract有open的特征 相当于open
abstract class Person : Callback , Callback2 {

    abstract fun getLayoutID() : Int

    abstract fun initView()

}
data类
/**
 * 数据类  == Java实体Bean
 */
// 不会再修改了,可以是使用val
// get set 构造 equals hashCode toString,  copy
data class User(val id: Int, val name: String, val sex: Char)
最简单的单例
// 只实例一次   相当于 单例
object MyEngine {

    fun m() {
        println("M run")
    }

    fun show() {
        println("我就只有一个实例")
    }
}
自己实现单例
// TODO Kotlin 单例模式1
class NetManager {

    // 只有一个实例
    object Holder {

        val instance = NetManager()

    }

    // 看不到 static  可以 派生操作
    companion object {

        // 全部都是  相当于 Java static

        fun getInstance() : NetManager = Holder.instance
    }

    fun show(name: String) {
        println("show:$name");
    }

}

// 客户端
fun main() {
    val net  = NetManager.getInstance()
    net.show("kt Derry1")
}
举报

相关推荐

0 条评论