Kotlin基础 对象与类、接口

   

一.对象

        

1.object关键字

        使用object关键字,你可以定义一个只能产生一个实列的类-单例

1.对象声明

        对象声明有利于组织代码和管理状态,尤其是管理整个应用运行生命周期内的某些一致性状态。

//object   表示单例
object ApplicationSingle {
    init {
        print("ApplicationSingle")
    }

    fun setMatter(){
        print("setMatter")
    }
}


fun main() {
    print(ApplicationSingle)
    ApplicationSingle.setMatter()
}

2.对象表达式

        有时候你要使用一个类的实例,只用一次,那么对于这种用完就丢的类实例,连命名都可以省了。下面这个例子中对象表达式XX类的子类,使用object关键字后,一旦实例化,该匿名类只能有唯一一个实例存在。

//父类
open class Player{
    open fun load()="loading nothing.."

}

fun main(){
    //对象表达式
    //匿名内部类 单例  继承子类
    val p=object : Player(){
        override fun load()="anonymous class"
    }
    print(p.load())
}

3.伴生对象

        如果你想将某个对象的初始化和一个类实例捆绑在一起,可以考虑使用伴生对象,使用companion修饰符,一个类定义里只能定义一个伴生对象

class ConfigMap {
    //伴生对象为一  且只有调用时才会创建  也是静态
    companion object{
        private const val PATH="xxxx"

        fun load()= File(PATH).readBytes()
    }

}

fun main() {

    ConfigMap.load()
}
 

二.类

1.嵌套类

        如果一个类只对另一个类有用,那么将其嵌入到该类中并使用两个类保持在一起是合乎逻辑的,可以使用嵌套类。

class ImplantClass {
    //嵌套类
    class Equipment(var name:String){
        fun show()= print("equipment:$name") // STOPSHIP: 2021-09-11

    }
    fun battle(){}

}

fun main(){
    //链式调用
    ImplantClass.Equipment("xiaohua").show()
}

2.数据类

1.定义

        数据类,就是用来存储数据的类。 数据类直接提供了toString方法的实现。

        数据类不能使用abstractopnesealedinner修饰符

       ==符号默认情况下,比较两个普通类对象就是比较他们的引用值,数据类默认情况下提供了equals和hashCode函数的实现。、

data class Coordinate (var x:Int,var y:Int){

    private val isInBounds=x>0 && y>0
    //重写
    override fun toString(): String {
        return "Coordinate(x=$x, y=$y, isInBounds=$isInBounds)"
    }

}

fun main() {

    print(Coordinate(10,20))
    //data 类比较的是值
    //class 类比较的是内存地址
    print(Coordinate(10,20)==Coordinate(10,20))
    val coordinate = Coordinate(10, 20)
}

2.copy

        除了重写Any类的部分函数,提供更好用的默认实现外,数据类还提供了一个函数,它可以用来方便地复制一个对象。假设你想创建一个S

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值