1. 程式人生 > >Java常考面試題8 深刻認識JAVA過載和重寫 以及是否可以根據返回型別來區分過載

Java常考面試題8 深刻認識JAVA過載和重寫 以及是否可以根據返回型別來區分過載

問:過載(Overload)和重寫(Override)的區別。

過載的方法能否根據返回型別進行區分? 

答:

方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。

過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;

重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。

過載對返回型別沒有特殊的要求。

舉例說明為什麼不能根據返回型別來區分過載:

java裡允許呼叫一個有返回值的方法的時候不必將返回值賦給變數;


這樣JVM就不知道你呼叫的是有返回值的還是沒返回值的.

class Test{
  public static void testMethod(){

  }
  public static int testMethod(){

  }//姑且假設允許吧
  public static void main(String[] args){
    int i = testMethod();//這個還說的過去 知道是呼叫哪個
    testMethod();//這個就無法判斷呼叫哪個方法了
  } 
}

現實中是需要根據引數型別和引數列表來區分過載!

public class MyTest {


public MyTest(int a) {
System.out.println(a);
}


public MyTest(String a) {
System.out.println(a);
}


public int getMyTest(int a) {
return a;
}


public String getMyTest(String a) {
return a;
}


public static void main(String[] args) {


MyTest nMyTest = new MyTest("aa");
nMyTest.getMyTest("a");
System.out.println(nMyTest.getMyTest("a"));
}


}

執行結果:

aa

a

相關推薦

Java試題8 深刻認識JAVA過載重寫 以及是否可以根據返回型別區分過載

問:過載(Overload)和重寫(Override)的區別。 過載的方法能否根據返回型別進行區分?  答: 方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。 過載發生在一個類中,同名的方法如果有不同的引數列表(引數

Java試題(三)

請求 其中 默認 查找 重新 技術分享 block 知識 logs     序言        說說今天遇到的一件小事吧,在遇到問題,查找答案時,看到很多人的博客裏面都有提到關鍵字眼,可讓人覺得可恨的是,大多數人寫的博文中,基本上都是照著書上的語言發表的,看了跟沒看一樣,沒

Java試題(一)

div 並且 功能 不出 共享 情況 字符型 對象 java字節碼       序言         我是一只亂飛亂撞的菜鳥,寫的文章目前是以記錄自己學習,和方便以後查看,期待日後不久能通過自己的努力,獲得一點小小的成功,然後寫出我的學習經驗總結性文章來。         

Java試題

class 出了 維護 們的 封裝 cep jdb destroy 輸出 Java集合類框架的基本接口有哪些? 參考答案 集合類接口指定了一組叫做元素的對象。集合類接口的每一種具體的實現類都可以選擇以它自己的方式對元素進行保存和排序。有的集合類允許重復的鍵,有些不允許。

Java試題11 內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

問:內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制? 答: 完全可以。如果不是靜態內部類,那沒有什麼限制!如果你把靜態巢狀類當作內部類的一種特例,那在這種情況下不可以訪問外部類的普通成

Java 試題及答案(吐血總結)持續更新...

1、解釋Java面向物件的特徵: 抽象、封裝、繼承、多型。 2、面向物件的好處是什麼? 3、Java常用的關鍵字、修飾符的使用 4、Java中的引數傳遞(值傳遞、引用傳遞) 5、簡述內部類、靜態內部類、匿名內部類的區別 6、try catch finally的

Java試題 (整理) 牛客網

    本文是牛客網的Java面試常考題 本人整理了一下 去除了 Applet Swing RMI 等不常考的 還有比較一些easy的題目。     原文連結  https://www.nowcoder.com/ta/review-java 下面還有精彩的討論  1、什

Java試題6 equals相同的物件對於的hashCode是否相等?

問: 兩個物件值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對? 答: 不對!! 如果兩個物件x和y滿足x.equals(y) == true,它

[Java試題-牛客網] 第1-10題

轉載請註明出處第1題:什麼是Java虛擬機器?為什麼Java被稱作是“平臺無關的程式語言”?Java虛擬機器JVM(java virtual machine)是一個執行位元組碼的程式。Java寫的程式碼儲存為字尾為.java的檔案,它會被特定的程式(javac.exe)編譯,

Java試題3--Java的基本資料型別有哪些?

問:String 是最基本的資料型別嗎? 答:不是。 Java中的基本資料型別只有8個:byte、short、int、long、float、double、char、boolean; 除了基本型別(pr

牛客網java試題筆記

1.   什麼是Java虛擬機器?為什麼Java被稱作是“平臺無關的程式語言”?Java虛擬機器是一個可以執行Java位元組碼的虛擬機器程序。java的跨平臺不是java源程式的跨平臺,如果是這樣,那麼所以語言都是跨平臺的, java源程式先經過javac編譯器編譯成二進位制

Java試題4--Java強制型別轉換

問:    float f=3.4;是否正確? 答:    不正確。3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於下轉型(down-casting,也稱為窄化)會造成精度損

計算機網絡試題總結

計算 art msl csdn 什麽 http協議 net 輸入 控制 這裏先將搜集到的題目列出來,日後一一精細得寫完。 https://blog.csdn.net/u013408431/article/details/62442670 https://blog.csdn.

HTTP試題

HTTP與HTTPS的區別 HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 標準埠是80 ,而 HTTPS 的標準埠是443 在OSI 網路模型中,HTTP工

計算機網路基礎試題精華總結

1、OSI,TCP/IP,五層協議的體系結構,以及各層協議 答:OSI分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。 TCP/IP分層(4層):網路介面層、 網際層、運輸層、 應用層。 五層協議 (5層):物理層、資料鏈路層、網路層、運輸層

C++試題

轉自:https://www.cnblogs.com/liufei1983/p/7099401.html 1 new/delete 與 malloc/free的區別     運算子是語言自身的特性,有固定的語義,編譯器知道意味著什麼,由編譯器解釋語義,生成相應的程式碼。

SSh三大框架試題

Hibernate工作原理及為什麼要用?  原理:  讀取並解析配置檔案 讀取並解析對映資訊,建立SessionFactory 開啟Sesssion 建立事務Transation 持久化操作 提交事務 關閉Session 關閉SesstionFactory 為什麼要用: 

軟體測試試題-軟體測試面試寶典

問:你在測試中發現了一個  bug ,但是開發經理認為這不是一個  bug ,你應該怎樣解決。 首先,將問題提交到缺陷管理庫裡面進行備案。 然後,要獲取判斷的依據和標準: 根據需求說明書、產品說明、設計文件等,確認實際結果是否與計劃有不一致的地方,提供 缺陷是否確認的直接依

阿里巴巴試題

一、String,StringBuffer, StringBuilder 的區別是什麼?String為什麼是不可變的? 答:   1、String是字串常量,StringBuffer和StringBuilder都是字串變數。後兩者的字元內容可變,而前者建立後內容不可變。 2、String不可變

計算機網路基礎試題

1、OSI,TCP/IP,五層協議的體系結構,以及各層協議 答:OSI分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。 TCP/IP分層(4層):網路介面層、 網際層、運輸層、 應用層。 五層協議 (5層):物理層、資料鏈路層、網路層、運輸層、