Kotlin从入门到放弃(04day)

209 阅读2分钟

这几天特忙,好吧,又在为自己找借口了。再不更,Kotlin就真的从入门到放弃了,不,还没入门!继续走起Kotlin基础。

Kotlin:我还没出手,你就倒下了!

我:不,我能坚持,我没有倒下

一、对象

对象的定义

//只有属性
class Rect(var width:Int, var height:Int)
//属性和行为
class Person(var mouth:String, var footer:String) {

    fun say() {
        println("用${mouth}说话")
    }

    fun run() {
        println("用${footer}走路")
    }
}

调用:

fun main(args: Array<String>) {
    //实例化对象
    var rect = Rect(40, 10)

    println("长方形的宽:${rect.width}")
    println("长方形的高:${rect.heigth}")

    var person = Person("嘴", "脚")
    person.say()
    person.run()
}

运行结果:

二、继承

继承即时一个类继承另一个类的属性和行为。

//猫父类,属性是嘴和爪子
open class BigCat {
    var mouth:String = "嘴"
    var footer:String = "爪子"

    open fun say() {
        println("${mouth}说话:大喵喵")
    }
}

//子类猫,继承父类猫,同样有嘴和爪子,但是说话喵喵喵是猫独有的
class Cat : BigCat() {
    override fun say() {
        println("${mouth}说话:小喵喵")
    }
}

调用:

fun main(args: Array<String>) {
    var cat = Cat()
    println(cat.mouth)
    println(cat.footer)
    cat.say()
}

结果:

三、抽象

抽象类的定义:

//定义了一个动物的抽象类
abstract class Animal(var name:String) {
    abstract fun say()
}
//定义了实现类狗
class Dog(name:String) : Animal(name) {
    override fun say() {
        println("${name}说:汪汪汪")
    }
}
//定义了实现类猴子
class Monkey(name:String) :Animal(name) {
    override fun say() {
        println("${name}说:绵绵绵")
    }
}

调用:

fun main(args: Array<String>) {
    var dog = Dog("狗")
    dog.say()

    var monkey = Monkey("猴子")
    monkey.say()
}

结果:

四、多态

同种功能,不同的形态。

例如上面的例子:

fun main(args: Array<String>) {
    var dog1 = Dog("金毛犬")
    dog1.say()

    var dog2 = Dog("拉布拉多犬")
    dog2.say()
}

结果:

五、接口

接口定义:

interface IMan {
    fun getName()
}

接口实现:

class Man :IMan {
    override fun getName() {
        println("我的名字叫阿西吧")
    }
}

调用及结果:

fun main(args: Array<String>) {
    var man = Man()
    man.getName()
}

说到这里,大家觉得接口和抽象类的区别是什么呢?

笔者认为:

接口是事务的能力; 抽象类是事务的本质。

例如:

abstract class Human() {
    abstract fun say()
}

调用:

class Man:Human(),IMan {
    override fun getName() {
        println("我的名字叫阿西吧")
    }
    override fun say() {
        println("***")
    }
}

六、代理和委托

关键字:by

七、单例

关键字:Object

八、枚举

关键字:enum

未完待续...