kotlin: 抽象类与继承

一,代码:

说明:

abstract 关键字用于在Kotlin中声明抽象类。
无法实例化抽象类(不能创建抽象类的对象)。但可以从它们中继承子类

非抽象属性 age和非抽象方法: 如果您需要在子类中覆盖这些成员,则应使用 open 关键字标记它们。
抽象方法 : 它没有任何实现,必须在其子类中重写。

注意:抽象类总是开放的。 您不需要显式使用open关键字从它们继承子类。
在抽象类中,至少有一个抽象方法

1,类:

package com.example.okdemo1.model

abstract class Person(name: String) {

    //非抽象属性, 如果您需要在子类中覆盖这些成员,则应使用 open 关键字标记它们
    var age: Int = 40
    //非抽象属性, 如果您需要在子类中覆盖这些成员,则应使用 open 关键字标记它们
    open var email: String = "laowang@163.com"

    init {
        println("我的名字是 $name.")
    }

    //非抽象方法,如果您需要在子类中覆盖这些成员,则应使用 open 关键字标记它们
    fun displaySSN(ssn: Int) {
        println("我的社保号是 $ssn.")
    }
    //抽象方法, 它没有任何实现,必须在其子类中重写
    abstract fun displayJob(description: String)
}

class Teacher(name: String): Person(name) {
    //非抽象属性不能覆盖

    //如果不存在此行override,则输出原抽象类中的值
    override var email: String = "wangfugui@163.com"

    //非抽象方法不能覆盖

    //覆盖抽象方法
    override fun displayJob(description: String) {
        println(description)
    }
}

2,activity中调用:

        //增加
        binding.btnIncrement.setOnClickListener {
            val jack = Teacher("王富贵")
            jack.displayJob("我是一名数学老师。")
            jack.displaySSN(23123)
            println("年龄:{${jack.age}}");
            println("邮箱:{${jack.email}}");
        }

二,测试效果:

 

posted @ 2025-06-22 12:50  刘宏缔的架构森林  阅读(18)  评论(0)    收藏  举报