Kotlin 基础用法-类,构造,接口,数据类,单例类

class KotlinClass {
}

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

    //空构造
    constructor() : this("", 0, "")

    fun desc() {
        println("我的名字叫$name,我的年龄是$age,我的住址是$address")
    }
}

class Student(val grade: Int, val sno: Int, name: String, age: Int, address: String) :
    Person(name, age, address), Study {
    init {
        println("kotlin 构造主没有函数体,那就把初始化逻辑写在这里...")
        println("我的名字叫$name,我的年龄是$age,我的住址是$address 我读$grade 年纪,我的学号是$sno")
    }

    constructor(name: String, age: Int, address: String) : this(0, 0, name, age, address)
    constructor() : this("", 0, "")
//
//    override fun doHomework() {
//        TODO("Not yet implemented")
//    }

    override fun readBooks() {
        println("$name 在读书")
    }

}

//接口使用
interface Study {
    fun readBooks()
    fun doHomework() {
        println("doHomework...")
    }
}

//数据类使用
data class User(var id: Int, var name: String, var no: Int) {

}
//单例类
object Singleton{
    fun test(){
        println("单例类的test...")
    }
}


fun main() {
    println("hello kotlin...")
    println("------------------------【类的基本使用001】-------------------")
    var person = Person()
    person.name = "李四"
    person.age = 30
    person.address = "北京市"
    person.desc()
    println("-------------------------【类的继承002】--------------------------")
    println("1.在kotlin中任何一个非抽象的类默认都是不可以被继承的,相当于java中给类声明了final关键字")
    println("2.之所以这么设计kotlin希望类最后是不可变的,而一个类允许被继承的话,它无法预知子类的变化,造成未知的风险,所以默认为final")
    println("3.如果需要继承请使用open 关键字")
    var student = Student();
    student.name = "黄飞鸿"
    student.address = "广东佛山"
    student.age = 18
    student.desc()
    println("-------------------------【类的构造函数003】--------------------------")
    println("1.在student继承person时的写法 Student : Person() person后面的括号,括号表示主构造函数,继承一个类使用的是冒号:")
    println("2.每个类默认都有一个不带参数的主构造函数,主构造的特点是没有方法体直接定义在类名后面即可")
    student = Student(5, 10, "方世玉", 10, "广东深圳")
//    student.desc()
    println("-------------------------【接口的定义004】--------------------------")
    println("1.接口的功能和java类似")
    println("2.kotlin中允许定义非抽象的方法,方法可以直接实现")
    student = Student("石志康", 46, "上海")
    student.readBooks()
    println("-------------------------【数据实体类的定义005】--------------------------")
    println("1.使用data关键字")
    var user = User(1,"zhangsan",100)
    println("我的名字是${user.name} 我的编号是${user.no}")
    println("-------------------------【单例类的定义006】--------------------------")
    println(Singleton.test())

}

输出结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值