對Java中的多態性和靜態綁定感到困惑
php小編西瓜經常收到關於Java中的多態性和靜態綁定的問題。這兩個概念在Java中經常被提及,但對於初學者來說可能會感到困惑。在本文中,我們將簡要介紹多態性與靜態綁定的概念,並解答一些常見問題,幫助讀者更好地理解和應用這些概念。
問題內容
我對java還是很陌生。所以我一邊玩java一邊閱讀多態性與靜態綁定。我來這裡是為了澄清我的思考過程是否正確。
class a { void foo(a a) { system.out.println("aaaaaa"); } } class b extends a { void foo(b a) { system.out.println("bbbbb"); } } class c extends b{ void foo (a a){ system.out.println("cccccbbbb"); } }
登入後複製
我創建了以下名為 c
的對象,並以 c 作為參數呼叫 foo。
C c = new C(); c.foo(c); // the output is BBBBB
登入後複製
從這篇關於java重載和動態綁定的問題中,我了解到如果在類別中找不到發送的參數,它將把參數(在本例中為c)向上轉換為在類別中可以找到的參數(在此情況a,因為void foo (a a)
)。但如果是這樣的話,它不應該印出“cccccbbbb”嗎?透過靜態綁定?
解決方法
類別 c
有 2 個重載方法,名稱為 foo
// defined in the class C void foo (A a){ System.out.println("CCCCCBBBB"); } // inherited from the class B void foo(B a) { System.out.println("BBBBB"); }
登入後複製
當我們使用類別c
的參數呼叫方法foo
時,會選擇最具體的一個- 類別b
在層次結構上比類別a
更接近,因此呼叫foo(b)
。
以上是對Java中的多態性和靜態綁定感到困惑的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信條陰影:貝殼謎語解決方案
2 週前
By DDD
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
