• Kotlin基础-类、属性、方法


    /*
    * 定义:class 类名 constructor(属性列表){更多的属性和方法}
    *
    * 构造器:用来设置类的新实例的初始化
    *open:被继承的类或属性关键字
    *
    * */
    open class Chinese constructor(var sex: Boolean,var region:String){
    
    //普通属性,与变量定义相似
       protected open var skin="yellow"
    //组合属性,由其他属性计算而来(get)
        val avgLife: Double
        get() {
            when (this.region) {
                "sh" -> {
                    return 82.4
                }
                "ah" -> {
                    return 77.8
                }
                else -> {
                    return 73.4
                }
            }
        //
    
    }
    //组合属性可以影响其他属性(set,可选),this代表实例
        var avg :Int
        get() {
            when (this.region) {
                "sh" -> {
                    return 4900
                }
                "ah" -> {
                    return 3200
                }
                else -> {
                    return  3500
                }
            }
        }
        set(value) {
            when (value) {
                in 4500..Int.MAX_VALUE -> {
                    this.region="sh"
                }
                in 2800..3500->{
                    this.region="ah"
                }
                else -> {
                    this.region="other"
                }
            }
        }
        //方法:
         open  fun cook(){
           val menu= arrayOf("青椒肉丝","番茄鸡蛋","紫菜汤")
            val desc=menu.reduce { s1, s2 ->s1+","+s2  }//连接
            print("我会${desc}")//---->>我会青椒肉丝,番茄鸡蛋,紫菜汤
        }
    }
    
    
    //继承
    class  Shanghair(sex :Boolean,region: String="sh"): Chinese(sex,region ){
      //子类中的属性
        var dialect="上海话"
        //属性覆盖
        override var skin="上海黄"
    }
    
    class Sichuan(sex: Boolean,region: String):Chinese(sex,region){
        var dialect="四川话"
        override  var skin="四川话"
    
        //覆盖方法
         override  fun cook(){
            super.cook()//继承父类的方法
            val menu= arrayOf("麻婆豆腐","烤鱼")
            val desc=menu.reduce{s1,s2->s1+","+s2}
            print("我会${desc}")//我会麻婆豆腐,烤鱼
        }
    
    }
    
    fun main(args: Array<String>) {
        //实例化一个类
        val yaoming=Shanghair(true)
        yaoming.avg=3000
        println(yaoming.region)//-->>ah
        print(yaoming.dialect)//--->>上海话
        yaoming.cook()
    
        val guojinming=Sichuan(true,"sc")
        guojinming.cook()
    }
  • 相关阅读:
    创业失败的七个原因及解决之道
    技术人员如何参与产品设计讨论:激活那一潭死水
    基于Android Studio搭建hello world工程
    WINCE6.0+IMX515通过cfimager.exe烧录镜像文件
    基于Android Studio搭建Android应用开发环境
    WinCE启动失败的原因与解决办法分析
    Maximum Allowed Error 7 错误解决
    s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
    Nandflash 驱动移植
    GIFT-EMS礼记----青软S2SH(笔记)
  • 原文地址:https://www.cnblogs.com/my334420/p/7070818.html
Copyright © 2020-2023  润新知