※ 引述《Arim (Arim5566)》之銘言:
: 初學java跟Android
: 想問一下關於下面程式碼
: private Button.OnClickListenter calcBMI=new Button.OnClickListener()
: //這邊的calcBMI應該是一個物件吧?,不太懂為什麼書上寫這是一個函式
: { ......} //這邊又配了一組大括號
: 大括號裏面又定義且實作了public void Onclick(View v)...
: 如果calcBMI是一個函式的話不太懂為什麼沒有寫回傳值以及參數而且又可以在裏面又
: 定義實作函式
: 而如果是物件的話不太懂為什麼還可以配一組大括號給他,一般宣告物件不就是
: 寫一行而已嘛?
: 主要是沒看過這種寫法
: 小弟懇求板友們給予指教 謝謝
兩段分開來說。
前面那句是宣告&建立物件沒錯,
Button.OnClickListener 代表 OnClickListener 是 Button 的 static inner class。
所以應該是書本寫錯了 (我很好奇是哪一本書)
大括號那裡則是 Anonymous subclass,
舉例來說 (為求簡短,所以這邊就不用上方的例子了)
Runnable r = new Runnable(){
public void run(){
// do something here ...
}
}
這樣的語法實際上是建立了一個繼承於 Runnable 的物件,
並且 override 了 run 這個 method。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.183.195
→
08/21 23:59, , 1F
08/21 23:59, 1F
→
08/22 00:00, , 2F
08/22 00:00, 2F
→
08/22 10:13, , 3F
08/22 10:13, 3F
推
08/22 16:12, , 4F
08/22 16:12, 4F
→
08/22 16:15, , 5F
08/22 16:15, 5F
討論串 (同標題文章)