kotlin 基础 10 面向对象
2019-04-05 本文已影响17人
zidea
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()}")
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")
}
}
屏幕快照 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")
}