android kotlin 基础复习 继承 inherit

1、新建文件kt

2、代码:

复制代码
/**用户基类**/
open class Person1(name:String){
    /**次级构造函数**/
    constructor(name:String,age:Int):this(name){
        //初始化
        println("-------基类次级构造函数---------")
        println("name:${name},age:${age}")
    }
}

/**子类继承 Person 类**/
class Student1:Person1{

    /**次级构造函数**/
    constructor(name:String,age:Int,no:String,score:Int):super(name,age){
        println("-------继承类次级构造函数---------")
        println("学生名: ${name}")
        println("年龄: ${age}")
        println("学生号: ${no}")
        println("成绩: ${score}")
    }
}


/**用户基类**/
open class Person2{
    open fun study(){       // 允许子类重写
        println("我毕业了")
    }
}

/**子类继承 Person 类**/
class Student2 : Person2() {

    override fun study(){    // 重写方法
        println("我在读大学")
    }
}

open class A {
    open fun f () { print("A") }
    fun a() { println("a") }
}

interface B {
    fun f() { println("B") } //接口的成员变量默认是 open 的
    fun b() { println("b") }
}

class C() : A() , B{
    override fun f() {
        super<A>.f()//调用 A.f()
        super<B>.f()//调用 B.f()
        super.b()
    }
}

fun main(args: Array<String>) {
    var s =  Student1("Runoob", 18, "S12345", 89)
    println("--------- s2 -------")
    val s2 =  Student2()
    s2.study()
    println("--------- c -------")
    val c =  C()
    c.f()
}

3、输出:

4、Student1也可以这样写:

复制代码
/**子类继承 Person 类**/
class Student1(name: String, age: Int, no: String, score: Int) : Person1(name, age) {

    init {
        println("-------继承类次级构造函数---------")
        println("学生名: ${name}")
        println("年龄: ${age}")
        println("学生号: ${no}")
        println("成绩: ${score}")
    }
}

5、说明:

oop中,一般抽象出共同的特性形成一个类,比如person有一个name。

student继承了以后,也具有了这个属性name,然后还可以增加属于自己的属性,形成一个更加具

体的类。比如:只有学生才有学生号、成绩等。

相关推荐
友人.2277 分钟前
Android 底部导航栏 (BottomNavigationView) 制作教程
android
努力学习的小廉34 分钟前
初识MYSQL —— 事务
android·mysql·adb
阿里云云原生1 小时前
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
android
.豆鲨包1 小时前
【Android】Android内存缓存LruCache与DiskLruCache的使用及实现原理
android·java·缓存
JulyYu2 小时前
【Android】针对非SDK接口的限制解决方案
android·客户端
猪哥帅过吴彦祖2 小时前
Flutter 系列教程:应用导航 - Navigator 1.0 与命名路由
android·flutter·ios
2501_916008893 小时前
iOS 跨平台开发实战指南,从框架选择到开心上架(Appuploader)跨系统免 Mac 发布全流程解析
android·macos·ios·小程序·uni-app·iphone·webview
stevenzqzq4 小时前
Android Hilt教程_构造函数
android
鹏多多4 小时前
flutter图片选择库multi_image_picker_plus和image_picker的对比和使用解析
android·flutter·ios