導航:首頁 > 源碼編譯 > 有關方法重載可以編譯正確的是

有關方法重載可以編譯正確的是

發布時間:2022-10-09 07:00:34

『壹』 方法的重載只能發生在同一個類下

答案為B
A:java不支持運算符重載
C:參數類型都為List且參數個數一致,不是重載,編譯時會報錯
D:方法的重載與返回值無關

『貳』 給定如下java代碼,下列()方法可以加入到Sample類中,並且能夠編譯正確的是(選2項) 求解!

A是錯的,java中不允許函數名相同、參數個數和類型相同僅返回值類型不同
B對

C對,返回2沒問題,會自動轉換。

D是錯的,一是返回類型為int,但函數體無返回數據,2是參數一沒寫變數名

『叄』 下面的方法重載,正確的是( )。要詳細解釋

正確的是C;
函數重載的要求是函數的參數類型或者個數不同,與返回值類型無關。
A僅是返回值類型不同,舍之。
B參數完全相同,D也是,皆捨去。
C的參數個數不一樣,故選C

『肆』 java編程問題,方法重載(overloading)必須滿足

方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數的類型或參數的個數。調用重載方法時,Java編譯器能通過檢查調用的方法的參數類型和個數選擇一個恰當的方法。

所以方法重載的要素

  1. 方法名相同

  2. 參數列表不同

  3. 在同一個類中

  4. 和返回值類型無關

    所以此題選擇B,C,E

『伍』 java 構造方法重載

方法重載:

1.必須在同一個類

2.方法名相同

3.方法參數個數或參數類型(或參數順序)不同


註:

1.參數順序指的是參數類型順序,與參數名字無關,比如show(int a,,Stringa,int c)和show(int c,String b,int a)是一樣的方法,非方法重載,因為他們的參數類型順序一樣是int,String,int


2.方法重載與訪問許可權修飾符和方法返回值無關


調用:


1.當調用的時候,填好方法參數時,它會自動判斷參數類型,參數類型順序,個數,然後再調用相應的重載 方法,當匹配不到相應的重載方法,那麼直接編譯錯誤


例子:


方法1. show()

方法2. show(int a,int b)

方法3. show(int a,String b)

方法4. show(String b,int a)

方法5. show(int b,int a)


1. 方法1.2.3.4是重載方法(1與[234]參數個數不同,2與[34]參數類型不同,3與[4]參數類型順序不同)

2. 方法1.3.4.5是重載方法(1與[534]參數個數不同,5與[34]參數類型不同,3與[4]參數類型順序不同)

3. 方法2和5非方法重載,因為參數類型順序一樣,跟參數名字無關

4. 以方法1.2.3.4為例,show()會調用方法1,show(1,1)會調用方法2,show(1,"1")會調用方法3

show("1",1)會調用方法4



----------------------------------------------------------------------------------------------------------------

  1. 你兩個方法名分別是test1,test2,方法名不同,肯定不是方法重載,而且構造方法名必須跟類名一樣,不可能出現不同名的構造方法


2.假如test(int i,String s){} test(String s,int i){}

那麼這2個構造方法是重載,不會出現編譯錯誤,因為參數類型順序不同,第一個構造方法參數類型順序是int,String,第二個構造方法參數類型順序是String,int

『陸』 什麼是方法重載方法重載的規則是什麼

方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數的類型或參數的個數。調用重載方法時,Java編譯器能通過檢查調用的方法的參數類型和個數選擇一個恰當的方法。方法重載通常用於創建完成一組任務相似但參數的類型或參數的個數或參數的順序不同的方法。

一、方法名一定要相同。

二、方法的參數表必須不同,包括參數的類型或個數,以此區分不同的方法體。

1、如果參數個數不同,就不管它的參數類型了!

2、如果參數個數相同,那麼參數的類型必須不同。

三、方法的返回類型、修飾符可以相同,也可不同。



(6)有關方法重載可以編譯正確的是擴展閱讀:

Java的方法重載,就是在類中可以創建多個方法,它們可以有相同的名字,但必須具有不同的參數,即或者是參數的個數不同,或者是參數的類型不同。

調用方法時通過傳遞給它們的不同個數和類型的參數,以及傳入參數的順序來決定具體使用哪個方法。

『柒』 重載的編程語言中的重載

編程中重載的定義:函數名相同,函數的參數列表不同(包括參數個數和參數類型),至於返回類型可同可不同。
重載是可使函數、運算符等處理不同類型數據或接受不同個數的參數的一種方法,關於重載一詞在詞義上有兩種不同的說法: 重載是一種多態(如C++,Java),有四種形式的多態:
1.虛函數多態
2模板多態
3重載
4轉換
所謂的動態和靜態區分是另一種基於綁定時間的多態分類,嚴格來說,重載是編譯時多態,即靜態多態,根據不同類型函數編譯時會產生不同的名字如int_foo和char_foo等等,以此來區別調用。故重載仍符合多態定義——通過單一標識支持不同特定行為的能力,只是重載屬於靜態多態,而不是通過繼承和虛函數實現的動態多態。 重載(overloaded)和多態無關,真正和多態相關的是覆蓋(inheritance)。
當派生類重新定義了基類的虛擬方法後,基類根據賦給它的不同的派生類引用,動態地調用屬於派生類的對應方法,這樣的方法調用在編譯期間是無法確定的。因此,這樣的方法地址是在運行期綁定的(動態綁定)。
重載只是一種語言特性,是一種語法規則,與多態無關,與面向對象也無關。
不過針對所謂的第二種重載,有一個專門的名詞--重寫或重定義。重載與重寫的區別就在於是否覆蓋,重寫一般多發生在不同的類且存在繼承關系之間,而重載多是在一個類里或者一塊代碼段里。
特點:
由於重載可以在同一個類中定義功能類似的函數,這給程序員管理類的相似函數提供了極大的方便。例如,在一個定義圓的類中,需要設定圓心和半徑來確定一個圓對象,程序員不需要設定setRadius(float r)和SetPoint(float x,float y)兩個不同名函數,而只需要設定一個CSetCicle函數名就夠了。在這個簡單的例子中重載並沒有明顯的優勢,可是當一個類中相似功能函數有幾十、上百個的時候,重載的優勢就顯現出來了,這時程序員不需要去記這么繁多的函數名,可以把更多的精力放在程序本身上。重載的方法只屬於子類。
函數:
1.函數名必須相同,返回值可以相同,也可以不同,但是特徵標必須不同。是函數名來確定函數的不同,是特徵標是函數可以重載。編譯器首先選在函數名,然後再根據特徵標在眾多重載的函數中找到合適的。
2.匹配函數時,編譯器將不區分類型引用和類型本身,也不區分const和非const變數。(小註:因為這些在定義和聲明時可能不同,但是在調用時都是一樣的,編譯器將無法區分)。但是值得注意的是,形參與const形參的等價性僅適於非引用形參。有const引用形參的函數與有非const引用形參的函數是不同的。類似的,如果函數帶有指向const類型的指針形參,則與帶有指向相同類型的非const對象的指針形參的函數不相同。
3.名稱修飾(name decoration)。編譯器將根據原型中指定的形參對每個函數名進行加密
重定義:
被重載的函數有不同版本,這些函數地位是一樣的,可以根據特徵標的不同選擇不同的函數。被重定義的函數也有不同的版本,但是你不能隨意選擇,你只能選擇最新的版本,被重定義多發生在類之間的繼承里。
4.函數會有那麼多版本,那麼編譯將選哪一個呢。當然,理想情況是,實參與形參的數據類型完全匹配,但是當不完全匹配時會怎樣呢?這就要牽扯到c++里復雜的類型轉換了。
在重載及函數模板重載里,編譯器選擇函數,要經過以下三步,這個過程稱為重載解析。
第一步:創建候選函數列表,其中包含有與被調函數名稱相同的函數與模板函數。
第二步:使用候選函數列表創建可行函數列表。這些都是參數數目正確的函數。
第三步:確定是否有最佳可行的函數。如果有,則使用。
確定最佳函數,只考慮其特徵標,而不考慮返回類型(也無從考慮,但是要是硬想辦法的話,也有,不過沒有必要為了不必要的性能而浪費資源)。確定最佳函數,匹配特徵標要依次經過以下判斷:(1)完全匹配(常規函數優於模板;允許無關緊要的轉換)(2)提升匹配(如char和short自動轉換為int)(3)標准轉換(int轉換為char,long轉換為double)(4)用戶自定義的轉換(如類聲明中定義的轉換函數)。
完全允許無關緊要的轉換,這些轉換包括引用,指針與實體之間,數組與指針之間,函數與函數指針之間,const與非const等等。
其次還要注意匹配的優先順序。1,指向非const數據的指針和引用優先於const的指針和引用參數匹配(這種優先順序只有當指針或引用出現時產生)。2,非模板函數,優於模板函數,顯示具體化的模板將優於隱式具體化的模板,總之較具體的優先(注意,具體並不是由於顯隱決定的,術語「最具體」是指編譯器推斷使用哪種類型時執行的轉換最少)。 通常,派生類繼承基類的方法,因此,在調用對象繼承方法的時候,調用和執行的是基類的實現.但是,有時需要對派生類中的繼承方法有不同的實現.
例如,假設動物類存在跑的方法,從中派生出馬和狗,馬和狗的跑得形態是各不相同的,因此同樣方法需要兩種不同的實現,這就需要重新編寫基類中的方法.
重寫基類方法就是修改它的實現或者說在派生類中重新編寫 //java代碼//方法重寫publicclassFather{publicvoidovel(inti){/*dosomething...*/}publicStringovef(){/*dosomething...*/return***;}}publicclassSonextendsFather{publicvoidovel(inti){/*doothersomething...*/}publicStringovef(){/*doothersomething...*/returnXXX;}}

閱讀全文

與有關方法重載可以編譯正確的是相關的資料

熱點內容
注冊伺服器地址指什麼 瀏覽:431
文本命令行 瀏覽:95
撲克牌睡眠解壓 瀏覽:190
rc4演算法流程圖 瀏覽:159
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63