美文网首页
17.面向对象

17.面向对象

作者: jetgege | 来源:发表于2017-11-22 10:24 被阅读6次


/**
 * 描述:面向对象编程
 * 对某种事物进行抽象化,称为"建模(model)",就像提取生物的基因.
 *  一个模型称之为一个类(class), 从而简化认知, 找到规律
 *   特征和属性: 需氧/厌氧, 寿命(多方因素影响)   -- 变量(属性)
 *   功能和行为: 进食,奔跑,睡觉,卖萌,求偶       -- 函数(方法)
 *   繁殖: 继承和多态
 *   要创造一个具体的生物,必须予以配置参数,即"实例化(instance)"
 * 作者:jet
 * 创建时间: 2017-11-21 15:51
 * 修改人:
 * 修改时间:
 * 修改内容:
 */
//快捷定义:class类名 constructor(属性列表){更多属性和方法描述}
//构造器:用来设置类的新实例的出厂配置

open class Chinese2(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
            }
        }

    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="othre region"
        }
    }

    //方法:厨艺
    open fun cook() {
        val menu= arrayOf("青椒炒肉丝","番茄炒蛋","紫菜蛋汤")

        val desc = menu.reduce{s1,s2->s1+","+s2}
        println("我会$desc")
    }
}


//类的主要特点:可以被继承,但要标记为开放类(可见性修饰符:open)
//写法:(class 子类:父类),然后可以用编辑器自动补全构造器
//子类获得父类所有能力,同时可发展多样性

class Shanghaiin2(sex:Boolean,region:String="sh"): Chinese2(sex,region) {
    var dialect = "我港吴侬软语"
    override var skin="shanghaiYellow"
    protected var city = "ShangHai"
}
//子类方法加成
class Sichuanwa2(sex: Boolean,region: String):Chinese2(sex,region){
    override fun cook() {
        super.cook()
        val menu = arrayOf("麻婆豆腐","重庆毛血旺","诸葛烤鱼")
        val desc = menu.reduce{ s1, s2 -> s1 + "," + s2 }
        println("我还会${desc}")
    }
}

fun main(args: Array<String>) {
    //实例化一个类
    val obm = Shanghaiin2(true)
    obm.avgSalary=3000
    println(obm.region)
    println(obm.dialect)
    obm.cook()

    val pj =Sichuanwa2(true,"tw")
    pj.avgSalary=2000
    println(pj.region)
    pj.cook()
}


出自:http://www.xiaoboswift.com/course/54

相关文章

  • 17.面向对象

    出自:http://www.xiaoboswift.com/course/54

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

网友评论

      本文标题:17.面向对象

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