首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 子類覆寫 onCreate 中呼叫 setContentView:this 隱含與父類方法

     編輯:程式設計綜合問答

問題

onCreate 中直接呼叫 setContentView(R.layout.xxx) 未加 this.,為何合法?是否為外部方法?

解析

  1. setContentView 定義於 **父類 Activity** (繼承鏈:AppCompatActivity → FragmentActivity → Activity)。
  2. 子類繼承父類,**繼承了所有非 private 方法**,可直接呼叫,this. 為隱含預設,編譯器自動補全。
  3. 非「外部方法」,而是**繼承鏈上的實例方法**。

this. 可省略情況

  • 無區域變數/參數同名遮蔽時,this.method() 與 method() 等價。
  • 建構子中呼叫另一建構子 this(...)、傳遞當前實例 this 給他人時**不可省略**。

原始碼追蹤

// Activity.java
public void setContentView(@LayoutRes int layoutResID) {
    getWindow().setContentView(layoutResID);
    initActionBar();
}

子類 onCreate 中直接呼叫即委派給父類實作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved