zoukankan      html  css  js  c++  java
  • 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()
    }
  • 相关阅读:
    Windows下使用CMake编译SuiteSparse成VS工程
    【设计模式
    【设计模式
    vue过滤和复杂过滤
    el-tooltip 自定义样式
    el-table加表单验证
    使用Go env命令设置Go的环境
    面试官:GET 和 POST 两种基本请求方法有什么区别?
    解决 Vue 重复点击相同路由报错的问题
    利用promise和装饰器封装一个缓存api请求的装饰器工具
  • 原文地址:https://www.cnblogs.com/my334420/p/7070818.html
Copyright © 2011-2022 走看看