Kotlin基本使用-类的声明

本文详细介绍了Kotlin中的类声明方式,包括类的基本结构、构造函数的定义及使用方法,同时对比了Kotlin与Java在构造函数定义上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类声明由类名、类头(指定其类型参数、主 构造函数等)和由大括号包围的类体构成。类头和类体都是可选的; 如果一个类没有类体,可以省略花括号

  • 声明没有类体的类(可以省去{ })

    class Example
    
  • 声明有构造函数的类

    • 在 Kotlin 中定义构造函数的方法与java定义构造函数的方法不同,java是使用类名而Kotlin使用关键字constructor。Kotlin一个类可以有一个主构造函数和一个或多个次构造函数。主构造函数是类头的一部分,它跟在类名(和可选的类型参数)后。

          class Example constructor(name : String){ ...... }
      
    • 如果主构造函数没有任何注解或者可见性修饰符(private、protected、internal 和 public),可以省略这个 constructor 关键字。

          class Example(name : String){ ...... }
      
          //此时不可以省略
          class Example public @Inject constructor(name: String) { ...... }
      
    • 主构造函数的参数可以在 init作为前缀的初始化块中调用,也可以在类中声明变量时初始化时调用。

          class Example constructor(name: String) {
      
              //初始化成员变量
              var peopleName : String = name
      
              //主构造函数初始化
              init {
                  Log.d("name",name)
              }
          }
      
    • 我们可以在主构造函数中直接声明、初始化成员变量,变量要用 var(可变) 或 val(只可初始化一次) 修饰。

          class Example constructor(var name: String, val age: Int) {
      
                fun method(){
                     Log.d("name",name)
                     Log.d("age",age.toString())
                     name = "小明"
                     Log.d("name",name)
                 }
          }   
      
          //相当于声明了变量并进行了初始化
          class Example constructor(name: String, age: Int) {
      
              var name: String = name
              val age: Int = age
      
              fun method(){
                  Log.d("name",name)
                  Log.d("age",age.toString())
                  name = "小明"
                  Log.d("name",name)
              }
          }
      
    • 次构造函数使用constructor,当有主构造函数事声明次构造函数要使用this绑定。通过次构造函数实例化对象时会优先执行初始化块中的方法。

          class Example constructor(name: String) {
      
              //主构造函数初始化
              init {
                  Log.d("name_init", name)
              }
      
              //先调用初始化块中的方法  在执行此构造函数中的代码
              constructor(name: String, age: Int) : this(name) {
                  Log.d("age",age.toString())
               }
          }
      
  • 如果没有声明主、次函数,那么该类就会有一个默认的没有参数的主函数,并且他是一个public修饰的。

  • 创建类的实例

     var example = Example()
     var example = Example("小明")
     var example = Example("小明",12)
    
  • 类中的内容

    1.  构造函数和初始化块
    2.  属性
    3.  函数
    4.  对象声明
    5.  嵌套类和内部类
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值