kotlin 基础 10 面向对象

《kotlin 基础 10 面向对象》 kotlin.jpeg

定义第一个类

class Rect(var w:Int,var h:Int){}

   var rect = Rect(20,30)
    println("height of rect ${rect.h}")
    println("weight of rect ${rect.w}")

定义类有点像函数,对了在 kotlin 中函数是一等公民的原因吧,这里定义类可以传入属性。

静态和动态

描述一种状态,

属性和行为

定义一个方法来为类添加行为

fun area():Int{
        return this.w * this.h
    }
println("area of rect ${rect.area()}")

《kotlin 基础 10 面向对象》 1-1F50Q64J40-L.jpg

定义一个空调类,去年北方很热,空调也卖脱销了,即使买到也得等到天气凉爽才能按上使用。

class AirCondition(module:String,cap:Float){

}
fun main() {
    var airCondition = AirCondition("green",1.5f)

}

然后在给空调添加开关的动作可以开关空调

class AirCondition(module:String,cap:Float){
    fun on(){
        println("turn on air condition")
    }
    fun off(){
        println("turn off air condition")
    }
}

通常家里的空调会提供几种预设好湿度和温度的模式供我们选择

fun setMode(mode:Int){
        when(mode){
            0 -> {
                println("舒适")
            }
            1 -> {
                println("凉爽")
            }
            3 -> {
                println("睡眠")
            }
        }
    }
var airCondition = AirCondition("green",1.5f)
    airCondition.on()
    airCondition.setMode(1)

封装

  • 隐藏内部实现的细节
  • 隐藏内部实现的细节就是封装
fun setMode(mode:Int){
        when(mode){
            0 -> {
                println("舒适")
                setTemperature(25)
            }
            1 -> {
                println("凉爽")
                setTemperature(22)
            }
            3 -> {
                println("睡眠")
                setTemperature(26)
            }
        }
    }

    fun setTemperature(temp:Int){
        println("set up ${temp}")
    }

但是我们不想让用户直接调整温度,这样设计应该不太合理,仅是为大家说明,我们不想让用户调用 setTemperature来直接设置温度。可以通过 private 设置方法为私有方法,这样用户就不可以自己直接设置空调温度了。

private fun setTemperature(temp:Int){
        println("set up ${temp}")
    }

继承

名师高徒
继承是指一个对象直接使用另一个对象的属性和方法。

class Human{
    var name:String = "";
    fun walk(){
        println("walking")
    }
    
}

《kotlin 基础 10 面向对象》 屏幕快照 2019-04-05 上午7.54.55.png

class XMan:Human(){

}
var xMan = XMan()
    xMan.name = "Logan"
    println("name ${xMan.name}")
class XMan:Human(){

    override fun walk(){
        println("walk two seepd ")
    }
}
open fun walk(){
        println("walking")
    }

抽象类

《kotlin 基础 10 面向对象》 kotlin_end.jpg

    原文作者:zidea
    原文地址: https://www.jianshu.com/p/07dbd399558d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞