正確答案為 C:兩次均執行 Rock 的建構子。
super() 呼叫父類無參建構子。this(...) 會調用本類其他建構子,但不會再次調用 super()。Rock 為最終子類,其建構子鏈只在自身內部流轉,故兩次輸出皆為 Rock 建構子訊息。new Rock()
→ Rock() { super(); ... } // 父類 Object 無參建構子
→ Rock(int) { this(); ... } // 本類無參建構子(已執行過)
→ 輸出 "Rock" 兩次
super() 必須是建構子第一句;this() 同理。二者不可共存。