【九】Koltin基础(02)---类与对象(第一行代码)

本文介绍了Kotlin编程中的类和对象定义,包括属性和方法的声明。接着讲解了继承的概念,如何使用`open`关键字允许类被继承,并展示了主构造函数和次构造函数的用法,以及如何通过`init`初始化块进行逻辑操作。此外,还详细阐述了次构造函数的调用规则以及特殊情况下的构造函数使用,如没有显示主构造函数时如何调用父类构造函数。
摘要由CSDN通过智能技术生成

一,类和对象的定义

Class Person {
    var  name = " "
    var age = 0

    fun eat () {
        println (name + "is eating. He is " + age + "years old")
    }
}

//实例化对象

val p = Person()

二,继承与构造函数

继承:open关键子,可以让一个类可以被继承

        如果不加open 关键字,则该类就不能继承,类似与Java中在类前加一个final关键字

        父类: 正常情况下需要带一个括号,带上父类构造函数的参数,子类:括号类内部需要除了自己的参数外,还需要带父类的参数,自动调用了父类的主构造函数

主构造函数: 括号内 带入参数,如果需要执行逻辑,就需要加入init函数

open class Person(val name: String, val age: Int)  {

    fun eat() {
        println(name + "is eating . He is " + age + "years old." )
    }
}

// 继承

class Student(val sno: String, val grade: Int, name: String, age: Int) : Person(name, age) {
    init {
        println("sno : " + sno + "grade: " + grade)
    }   // 主构造函数,变量声明括号内,逻辑书写放在init方法内部
}

次构造函数:一个类只能有一个主构造函数,可以有多个次构造函数 constructor,需要直接或者间接调用主构造函数

class Student(val sno: String, val grade: Int, name: String, age: Int) : Person(name, age) {
    init {
        println("sno : " + sno + "grade: " + grade)
    }   // 主构造函数,变量声明括号内,逻辑书写放在init方法内部

    constructor(name: String, age: Int) : this("",0,name,age) {

    }
    constructor() : this("", 0) {

    } // 当既有主构造函数,又有次构造函数时,所有的次构造函数都必须调用主构造函数。,第一个次构造函数直接调用,第二个次构造函数间接调用主构造函数

}

特殊情况:当一个类没有显示的定义主构造函数且定义了次构造函数时,他就是没有主构造函数

这时候只能调用父类的主构造函数,所以 用了super关键字

class Students : Person {
    constructor(name: String, age: Int) : super(name, age)
}   // 没有主构造

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值