Kotlin学习进阶(三)

前言

上一篇提到了Kotlin的一些重要基本语法,可以看到和java的相似度极高。这篇主要是讲解kotlin类和对象的语法,后面将会写一些关于Kotlin的高级使用以及使用Kotlin进行安卓开发。

1.类的创建

kotlin中定义类和类的属性和java都是一样的,只是语法上面的表现形式有所不同

class Person { 
    // 大括号内是类体构成
    fun work(){ ... }
}

类中的属性定义就不作太多的解释,主要还是以栗子为参考

class Student{
    var name:String
    var age = 18 //Int类型必须有初始化值

    constructor(name: String, age: Int){
        this.name = name
        this.age = age
    }

    override fun toString(): String {//这里就是重写了toString方法
        return "Student(name='$name', age=$age)"
    }

}

fun main(args:Array<String>){
    var student = Student("heweiwei",18)
    println(student.toString())
}

结果输出:
Student(name='heweiwei', age=18)

我们还可以在声明类的时候创建构造函数

class Student(name:String , age : Int){
        override fun toString(): String {//这里就是重写了toString方法
        return "Student(name='$name', age=$age)"
}

2.类的继承

kotlin类的继承需要注意的是覆写父类的方法和属性

abstract class Person{
        abstract var name : String

        fun wakeUp(){}//默认为final,无法被覆写
        
        open fun work(){}//可以被覆写
}

class Student : Person() {
        override var name : String = ""

        override fun work() {
            super.work()
            print(name+"work")
        }
}

class Student2(override var name: String) : Person(){//也可以通过构造函数覆写
        override fun work() {
            super.work()
            print(name+"work")
        }
}

fun main(args : Array<String>){
    var student : Student = Student();
    student.name = "heweiwei"
    student.wakeUp()
    student.work()
}

3.接口

kotlin的接口不仅可以定义方法,还可以定义方法的具体实现

interface LuDaiMa{
        var bugName : String
        
        fun fixBug(){
            //...
        }
}

class Android(override var bugName: String) : LuDaiMa{
        override fun fixBug() {
            super.fixBug()
            print("fix"+bugName)
        }
}

4.类的扩展

Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。简单来说,Kotlin扩展函数允许我们在不改变已有类的情况下,为类添加新的函数,举个栗子

class Student(var name:String)

fun Student.Print(){//扩展函数
    print("$name")
}

fun main(arg:Array<String>){
    var student = Student("HW")
    student.Print()
}

//在Android开发中的一个栗子
fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){
    Toast.makeText(this, message, duration).show()
}

5.委托模式

kotlin中自带委托属性,用by关键字,还是看栗子

interface FixBug{
    fun fixBug()
}

class Medium:FixBug{
    override fun fixBug() {
        println("fix")
    }
}

class Progremmar:FixBug by Medium(){

}

fun main(args : Array<String>){
    Progremmar().fixBug()
}

结语

至此,基本语法部分的重要笔记就记录在这里,详细的可以去看Kotlin的菜鸟教程,下一篇将会着重写一下基于Kotlin编写单例模式

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值