如果我的班級延伸Activity
並實施SensorEventListener
,哪一個將this
參考 - Activity
或SensorEventListener
?或兩者? 非常感謝。哪一個「這個」是指?
public class MainActivity extends Activity implements SensorEventListener
如果我的班級延伸Activity
並實施SensorEventListener
,哪一個將this
參考 - Activity
或SensorEventListener
?或兩者? 非常感謝。哪一個「這個」是指?
public class MainActivity extends Activity implements SensorEventListener
this
指的是類的當前實例。 implements
是一個接口,所以this
永遠不能指向那個。您不能創建接口的實例,只能創建類的實例。 Activity
是MainActivity
的超類,也沒有它的實例。實例將是MainActivity
然而,雖然這是一個有點意義的,你可以投this
所有的MainActivity
,Activity
或SensorEventListener
沒有任何問題。
謝謝?爲什麼我可以將其轉換爲SensorEventListener? –
你總是可以轉換爲由你的類實現的超類和接口。所以,假設您有另一個需要在其構造函數中使用'SensorEventListener'的類。您可以傳入任何實現了'SensorEventListener'的類,但需要'SensorEventListener'的類不知道您傳入了MainActivity,因此它只能調用SensorEventListener接口中該對象上的方法。正如@dgimenes – SDJMcHattie
提到的那樣,多晶現象就是這樣的。實際上,這正是幾乎每次爲視圖或訪問LayoutInflater需要「上下文」時發生的情況。因爲Activity是Context的子子類,所以它幾乎總是作爲Context傳入Activity,所以它可以被稱爲Context – SDJMcHattie
this
將把MainActivity
這將是
當然,如果你「改變大賽」,並期待的Activity
實例的類的實例:在這種情況下this
可以指Activity
但看你的問題,答案肯定是MainActivity
this
關鍵字代表當前活動或類或對象。
例如
private int number;
public example(int number) {
this.number = number;
}
這裏,this.number代表私人int數字變量,number代表方法int數字。
另一個例子是(其同在Java)
class example implements ActionListener{
public static void main(String[] args)
{
JButton button = new JButton();
button.addActionListener(this);
}
}
既然你已經實現了動作監聽類/項目當你輸入這個,它會調用動作監聽庫。
我建議你閱讀關於Polymorphism。 http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html – dgimenes