zoukankan      html  css  js  c++  java
  • 从零开始学Kotlin第四课

    面向对象:

    //妹子          性格                声音
    class  Girl(var chactor:String,var voice:String)
    
    fun main(args: Array<String>) {
        var girl=Girl("彪悍","甜美")
        println("声音"+girl.voice)
    }

    行为

    //妹子          性格                声音
    class  Girl(var chactor:String,var voice:String){
        //行为
     fun   smile(){
         println("妹子笑了下,么么哒")   
        }
    }
    
    fun main(args: Array<String>) {
        var girl=Girl("彪悍","甜美")
        println("声音"+girl.voice)
        girl.smile()
    }

     java的三大特性封装继承多态

    属性私有private是和jav一样的,继承不一样,案例:

    父类:
    
    /**
     * open允许被继承
     */
    open class Fathor{
       open var chactor:String="性格内向"
        /**
         * 方法允许重写
         */
        open fun action(){
            println("公共场合喜欢大声喧哗")
        }
    
    }
    
    
    子类:
    
    /**
     * 继承:FATHOR
     */
    class Son:Fathor(){
        /**
         * 重写方法
         */
        override fun action(){
            println("很乖巧")
        }
    }
    
    调用类:
    
    fun main(args: Array<String>) {
        var son1=Son();
        println("儿子的性格:${son1.chactor}")
        son1.action()
    }

     抽象类:

     接口实现:

    interface  IMan{
        fun  xiaodidi()
    }
    
    
    
    class  Man:IMan
    {
        override fun xiaodidi() {
            println("18cm")
        }
    }
    java 的instanceof 被Kotlin简化为is

    代理和委托:
    爸爸委托儿子洗碗的案例:
    package DL
    //洗碗的接口
    interface  IWashBowl{
        fun washing()
    }
    
    
    package DL
    
    /**
     * 大头儿子
     */
    class  BigHeadSon:IWashBowl{
        override fun washing() {
            println("我是大头儿子一次洗碗一块钱")    }
    
    }
    
    
    
    package DL
    
    /**
     * 小头爸爸委托儿子洗碗  委托模式:by +委托对象
     */
    class SmallHeadFather:IWashBowl  by BigHeadSon(){
    
        /**
         * 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
         */
        override fun washing() {
            println("小头爸爸洗碗一次10元")
            BigHeadSon().washing()
        }
    }
    
    
    package DL
    
    class Demo {
    }
    
    fun main(args: Array<String>) {
    
        var father=SmallHeadFather()
        father.washing()
    
    }

     现在大头儿子每次创建对象都会产生一次大头儿子,做个单例模式吧。

    package DL
    
    /**
     * 大头儿子
     */
    object  BigHeadSon:IWashBowl{
        override fun washing() {
            println("我是大头儿子一次洗碗一块钱")    }
    
    }
    package DL
    
    /**
     * 小头爸爸委托儿子洗碗  委托模式:by +委托对象
     */
    class SmallHeadFather:IWashBowl  by BigHeadSon{
    
        /**
         * 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
         */
        override fun washing() {
            println("小头爸爸洗碗一次10元")
            BigHeadSon.washing()
        }
    }
    package DL
    
    class Demo {
    }
    
    fun main(args: Array<String>) {
        //单例模式
        BigHeadSon.washing()
    }

     枚举的使用:

    package DL
    
    enum class Week {
        星期一,星期二,星期三,星期四,星期五,星期六,星期日
    }
    
    fun main(args: Array<String>) {
    
        println(  Week.星期一.ordinal)//获取元素位置
    }

     印章类型:个人感觉像是内部类

    枚举更在意数据,sealed更在意数据类型。

    
    
  • 相关阅读:
    System.Net.Http.HttpClient POST 未能创建 SSL/TLS 安全通道
    SQL Server用户权限查询
    IIS 7 Deploy .Net Framework 4.8 Application
    System.Net.Http.HttpClient 模拟登录并抓取弹窗数据
    HtmlAgilityPack Sample
    嵌套 struct & class 的遍历
    SQL循环插入测试数据
    windows文本转语音 通过java 调用python 生成exe可执行文件一条龙
    Centos8 删除了yum.repos.d 下面的文件
    nacos 配置
  • 原文地址:https://www.cnblogs.com/q1359720840/p/10591232.html
Copyright © 2011-2022 走看看