image.png

嵌套类

一个类只对另一个类有用,就使用嵌套类

数据类

用来存储数据,提供了个性的tostring实现,==符号默认情况下比较对象就是比较他们的引用值,数据类则比较属性值,数据类提供了equals和hashCode的个性化实现

提供了copy函数,copy的时候次构造函数不执行

自带结构申明

使用数据类的条件:
image.png

枚举类

枚举是一个类
和java的枚举有很大差别:
枚举里可以定义函数、属性

密封类

  1. fun main() {
  2. val qualified = LicenseStatus.Qualified("4534i9325")
  3. val unQualified = LicenseStatus.UnQualified
  4. val learning = LicenseStatus.Learning
  5. println(Driver(qualified).check())
  6. println(Driver(unQualified).check())
  7. println(Driver(learning).check())
  8. }
  9. sealed class LicenseStatus {
  10. object UnQualified : LicenseStatus()
  11. object Learning : LicenseStatus()
  12. class Qualified(val lisenceId: String) : LicenseStatus()
  13. }
  14. class Driver(var status: LicenseStatus) {
  15. fun check(): String {
  16. return when (status) {
  17. is LicenseStatus.Learning -> "learning"
  18. is LicenseStatus.Qualified -> "Qualified ${(this.status as LicenseStatus.Qualified).lisenceId}"
  19. LicenseStatus.UnQualified -> "unQulified"
  20. }
  21. }
  22. }

抽象类

范型类