關(guān)于Kotlin中init函數(shù),成員變量,構(gòu)造函數(shù)問(wèn)題

如果在init中使用了成員變量,那么成員變量一定要定義在init之前,否則會(huì)爆Variable cannot be initialized before declaration 錯(cuò)誤

不管調(diào)用哪個(gè)次級(jí)構(gòu)造函數(shù),都是先執(zhí)行主構(gòu)造函數(shù)(初始化成員變量和執(zhí)行init代碼塊),再執(zhí)行次級(jí)構(gòu)造函數(shù)代碼。所以kotlin規(guī)定次級(jí)構(gòu)造函數(shù)先要委托給主構(gòu)造函數(shù)。

成員變量初始化和init代碼塊誰(shuí)先執(zhí)行是按它們的聲明順序來(lái)的。

class InitTest {

    private var num1 = 2

    init {
        num1 = 3
        println("init方法:$num1")
    }

    init {
//        num2 = 5
        println("init方法2")
    }

    constructor() {
        println("構(gòu)造函數(shù)1")
    }

    constructor(params: String) {
        println("構(gòu)造函數(shù)2")
    }

    private var num2 = 4

}
public final class InitTest {
   private int num1;
   private int num2;

   public InitTest() {
      this.num1 = 2;
      this.num1 = 3;
      String var1 = "init方法:" + this.num1;
      System.out.println(var1);
      var1 = "init方法2";
      System.out.println(var1);
      this.num2 = 4;
      var1 = "構(gòu)造函數(shù)1";
      System.out.println(var1);
   }

   public InitTest(@NotNull String params) {
      Intrinsics.checkNotNullParameter(params, "params");
      super();
      this.num1 = 2;
      this.num1 = 3;
      String var2 = "init方法:" + this.num1;
      System.out.println(var2);
      var2 = "init方法2";
      System.out.println(var2);
      this.num2 = 4;
      var2 = "構(gòu)造函數(shù)2";
      System.out.println(var2);
   }
}
// InitTestKt.java
package com.lcf.study;

import kotlin.Metadata;

@Metadata(
   mv = {1, 9, 0},
   k = 2,
   d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001¨\u0006\u0002"},
   d2 = {"main", "", "leetCodeJava"}
)
public final class InitTestKt {
   public static final void main() {
      new InitTest("222222222");
   }

   // $FF: synthetic method
   public static void main(String[] var0) {
      main();
   }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容