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()
    }
  • 相关阅读:
    详解java并发原子类AtomicInteger(基于jdk1.8源码分析)
    可见性、原子性和有序性
    Django基础之简单的前后端交互
    JDK1.8新特性之(三)--函数式接口
    JDK1.8新特性之(一)--Lambda表达式
    JDK1.8新特性之(二)--方法引用
    在IDEA创建类时自动创建作者日期等信息设定
    用batch调用DB2 CLPPlus执行多个SQL文
    windows7 设定开关机事件
    Mybatis显示修改数据库成功,数据库却没有修改
  • 原文地址:https://www.cnblogs.com/my334420/p/7070818.html
Copyright © 2011-2022 走看看