拋出問題:
- kotlin 構(gòu)造函數(shù)干啥用的
- init和構(gòu)造函數(shù)有啥區(qū)別
- 生命成員變量private var testString 鲸郊?= null 啥時候分配空間
- companion object 加載時序
Q:kotlin 構(gòu)造函數(shù)干啥用的
A:kotlin 的空參構(gòu)造就是init方法, 結(jié)論:空參構(gòu)造就是init方法
class testClass() {
private var zdf:String?=null
private var zdf01:String?=null
init {
zdf01 = "123"
copy()
}
private fun copy(){
zdf ="hei hei"
}
}
---------------------------------------
public final class testClass {
private String zdf;
private String zdf01 = "123";
private final void copy() {
this.zdf = "hei hei";
}
public testClass() {
this.copy();
}
}
Q:kotlin 構(gòu)造函數(shù)干啥用的
A: init和構(gòu)造函數(shù)有啥區(qū)別团搞。 結(jié)論:如果使用了多個構(gòu)造方法严望,init為空參構(gòu)造,剩下的構(gòu)造方法該怎么實現(xiàn)怎么實現(xiàn)
class testClass() {
private var zdf:String?=null
private var zdf01:String?=null
constructor(s: String,int: Int) : this() {
}
constructor(s:String) : this() {}
init {
zdf01 = "123"
copy()
}
private fun copy(){
zdf ="hei hei"
}
}
-------------------------------
public final class testClass {
private String zdf;
private String zdf01;
private final void copy() {
this.zdf = "hei hei";
}
public testClass() {
this.zdf01 = "123";
this.copy();
}
public testClass(@NotNull String s, int var2) {
Intrinsics.checkParameterIsNotNull(s, "s");
this();
}
public testClass(@NotNull String s) {
Intrinsics.checkParameterIsNotNull(s, "s");
this();
}
}
Q:聲明成員變量private var testString 逻恐?= null 啥時候分配空間
A:成員變量在new的時候像吻,使用new關(guān)鍵字構(gòu)造對象時分配。優(yōu)先于構(gòu)造塊和構(gòu)造方法執(zhí)行之前复隆。
Q:companion object 加載時序
A: companion object 伴生對象拨匆,類似于靜態(tài)方法
結(jié)論 : 修飾為伴生對象,伴生對象在類中只能存在一個,類似于java中的靜態(tài)方法 Java 中使用類訪問靜態(tài)成員挽拂,靜態(tài)方法惭每。
class MainActivity : AppCompatActivity() {
private var testString : String?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
init {
testString = "zdf"
println(testString)
println(testInt)
}
companion object{
const val testInt:Int = 1
}
}
--------------------------------
public final class MainActivity extends AppCompatActivity {
private String testString = "zdf";
public static final int testInt = 1;
public static final MainActivity.Companion Companion = new MainActivity.Companion((DefaultConstructorMarker)null);
private HashMap _$_findViewCache;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(-1300009);
}
public MainActivity() {
String var1 = this.testString;
boolean var2 = false;
System.out.println(var1);
byte var3 = 1;
var2 = false;
System.out.println(var3);
}
public View _$_findCachedViewById(int var1) {
if (this._$_findViewCache == null) {
this._$_findViewCache = new HashMap();
}
View var2 = (View)this._$_findViewCache.get(var1);
if (var2 == null) {
var2 = this.findViewById(var1);
this._$_findViewCache.put(var1, var2);
}
return var2;
}
public void _$_clearFindViewByIdCache() {
if (this._$_findViewCache != null) {
this._$_findViewCache.clear();
}
}