美文网首页Kotlin开发
Kotlin入门(二 )

Kotlin入门(二 )

作者: 吾乃韩小呆 | 来源:发表于2019-05-27 07:57 被阅读0次

    1、面向对象

    创建一个 bean 类

    class Person(var name: String, var age: Int)
    
    fun main() {
        var person = Person("韩小呆", 20)
        print("人的姓名:${person.name} 人的年龄:${person.age} ")
    }
    

    在这里 “class Person(var name: String, var age: Int)” 表示 Person 是含有两个参数 构造方法的类,在初始化该对象时候,需将参数传递进去

    2、定义一个外部类

    带参数构造方法的外部类

    class Person(var name: String, var age: Int)
    

    不含参 构造方法 外部类

    class Person {
         var name: String = ""
         var age: Int = 0
    }
    

    声明方法 则正常声明即可

    2、封装

    private       //仅自己 可以访问使用
    protected    //自己、子类、同包 可以访问
    默认         // 自己、同包 可以访问
    public      //任何情况下都 可以访问
    

    3、继承

    父类定义方式:

    open class Person {
        var age: Int = 0
        open fun like() {
            println("异性朋友")
        }
    }
    

    这里的 “open” 修饰 类时,表示允许被继承,修饰方法时 表示允许被子类 重写。
    “open”关键字与“private”关键字不可以同时进行修饰

    子类定义方式:

    class Man : Person() {
        override fun like() {
            print("美女")
        }
    }
    

    这里的 “class Man : Person()” 创建方式 表示 该类继承自 Person 类
    “override ” 关键字表示重写 父类的 “like( )”方法

    这里 就和 Java 语言不同了 父类声明的 时候 需要 加 “open” 关键字 ,而子类进行重写的时候 必须加 “override” 关键字

    4、抽象类

    定义抽象父类

    abstract class Person( var name: String) {
        abstract fun like()
    }
    

    继承抽象类的 子类

    class Man(name: String) : Person(name) {
        override fun like() {
            print("$name like 美女")
        }
    }
    

    测试类

    fun main() {
        var man = Man("小呆")
        man.like()
    }
    

    5、接口

    定义接口

    interface Usb {
        fun work()
    }
    

    定义抽象类

    abstract class Device {
        abstract fun doSomething()
    }
    

    实现接口 和 继承抽象类

    class Computer : Device(), Usb {
        override fun doSomething() {
            println("play game")
        }
    
        override fun work() {
            println("插入鼠标")
        }
    }
    

    测试类

    fun main() {
        var computer = Computer()
        computer.doSomething()
        computer.work()
    }
    

    这里没有什么特别的 和 Java 的相关代码相同的

    6、代理模式

    定义公共接口

    interface WashBow {
        fun washing()
    }
    

    子类 1 实现 接口

    class Son :WashBow{
        override fun washing() {
          println("儿子洗碗")
        }
    }
    

    子类 2 实现接口 并且 将自己设置为代理类

    class Father : WashBow by Son() {
        override fun washing() {
            println("爸爸看着儿子")
            Son().washing()
        }
    }
    

    测试类

    fun main() {
        var father = Father()
        father.washing()
    }
    

    这里的 by 关键字 表示 子类 2 需要实现的 抽象方法 由 子类 1 进行实现
    这个代码存在问题 代码内 包含 两个 子类1 对象

    7、单例模式

    公共接口

     interface WashBow {
        fun washing()
    }
    

    单例的子类 1

    object Son : WashBow {
        override fun washing() {
            println("儿子洗碗")
        }
    }
    

    子类 2

    class Father : WashBow by Son {
        override fun washing() {
            println("爸爸看着儿子")
            Son.washing()
        }
    }
    

    测试类

    fun main() {
        var father = Father()
        father.washing()
    }
    

    这里的 Object 声明 类 直接 该类转换为 单例类

    8、密封类

    通过 sealed 关键字进行修饰 class 导致其只能被内部继承,而外部类若要初始化该类,则必须通过内部子类进行初始化
    闭包的代码

    sealed class Father {
    
        fun seyHello(){
            println("你好!!!")
        }
    
        class SonOne : Father()
        class SonTwo : Father()
    }
    

    测试类代码

    fun main() {
        var father: Father = Father.SonOne()
        var fatherTwo: Father = Father.SonTwo()
    
        father.seyHello()
        fatherTwo.seyHello()
    }
    
    欢迎关注.jpg

    相关文章

      网友评论

        本文标题:Kotlin入门(二 )

        本文链接:https://www.haomeiwen.com/subject/whoxtctx.html