22.对象声明和表达式



/**
 * 描述:有时候只是要对某个类进行轻微改造,供临时使用,避免继承
 * 对象声明和表达式就很有用.
 * 作者:jet
 * 创建时间: 2017-11-21 17:22
 * 修改人:
 * 修改时间:
 * 修改内容:
 */

//对中国人这个类来说,可能各省人适合继承
open class Chinese(var name:String){
    open val skin = "yellow"
}

fun main(args: Array) {

    //但如果是外国人入籍,就不适合用“继承”
    //对象表达式:val 对象名 = object:类,接口{//属性或方法override定义}
    val baako = object :Chinese("Baako Zaid"){
        override val skin: String
            get() = "black"
    }
    println(baako.skin)

    //纯对象表达式:临时使用,无须继承任何类
    val tempPoint = object {
        var x =1
        var y =2
    }

    println(tempPoint.y)

    //相当于调用函数
    NetworkRequestManager.register()

    //与类关联性强
    IDCard.create()

}

//对象声明。不能用在函数中
//一般用于对其他类的一种包装

object NetworkRequestManager{
    fun register(){
        println("链接网络注册中。")
    }
}

//伴生对象: 一般用于创建一个类的实例的"工厂"方法
//可用于与Java的静态成员互操作
class IDCard{
    companion object {
        fun create()=IDCard()
    }
}



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

你可能感兴趣的:(22.对象声明和表达式)