Kotlin 数据类的使用规则及其反编译的结果

数据类就是只存储数据包含操作行为的类
这里创建了一个Person的数据类和Person2的数据类,并演示两种反编译结果

//  数据类 data class
/*
    数据类生成的必要条件
    主构造方法至少要有一个参数
    所有的主构造方法都需要被标记为val或者var 标记了叫属性 不标记叫参数
    数据类不能是抽象 open sealed(密封)inner类

    编译器会自动生成:
    1,equals ,hashCode 方法
    2,toString :name +age + address
    3,针对属性的 componentN 方法,并且按照属性的声明顺序来生成
    4,copy方法



    关于数据类的继承要点
    1、如果数据类中显示定义了equal hashCode toString方法或者是在数据类的父类中将这些方法声明为了final
        那么这些方法不会再生成,会使用现成的
    2、如果父类拥有了 componentN 方法并且是open的 返回类型是兼容的类型 那么编译器就会在数据类中生成相应的 componentN方法
        并且重写父类中的这些方法,如果父类中的这些方法由于不兼容的签名或是被定义为final的 那么编译器就会报错
    3、在数据类中显式提供 componentN 方法以及copy方法(在相同数量的属性定义,数量不相同则标记为重载)是不允许的

 */
data class Person(val name: String, var age: Int, var address: String)
//所有成员在有默
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值