美文网首页
12.面向对象(object-oriented)

12.面向对象(object-oriented)

作者: 木子心语 | 来源:发表于2017-09-28 18:22 被阅读0次
面向对象编程:
对某种事物进行抽象化,称为"建模"(model),就像是提取生物的基因
一个模型称之为一个类(class),从而简化认知,找到规律
特征和属性
功能行为
集成和多态
快捷定义:class 类名 constructor(属性列表)  {更多属性和方法描述}
//构造器: 用来设置类的新实例的配置

创建CityClass类

open class CityClass(var  region:String){
//薪水
var avgSalary : 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 region"
                 }
             }
//烹饪
open fun cook(){

        val menu = arrayOf("1","2")

        val desc = menu.reduce{s1,s2-> s1 + "," + s2}

        println("${desc}")
    }
}

然后创建子类,继承CityClass类
继承类的特点:可以被继承,但要标记为开放类(可见性修饰符:open)
子类获取父类所有能力,同时可发展多样性

class sh(region: String = "sh") :CityClass(region){
      protected var city = "sh"
}
class sc(region:String) : City2(region){
      //重写cook方法
      override fun cook(){
      super.cook()
      val  menu = arrayOf("The bean curd","Chongqing MAO blood flourishing")
      val desc = menu.reduce{s1,s2 -> s1 + "," + s2}
      println("我还会${desc}")
     }
}

在main方法中实例化类

fun main(args: Array<String>) {

    //实例化一个类
    val xiaoyaoming = sh(true)
    xiaoyaoming.avgSalary = 3000
    println(xiaoyaoming.region)
    println(xiaoyaoming.region)

    //方法覆盖
    val xiaoguojingming = sc(
            true,"sc"
    )
    xiaoguojingming.cook()
}

相关文章

网友评论

      本文标题:12.面向对象(object-oriented)

      本文链接:https://www.haomeiwen.com/subject/rdmgdxtx.html