日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java的重写

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的重写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果子類中具有與父類中聲明相同的方法,在java中稱為方法覆蓋。換句話說,如果子類提供了由其父類提供的其中一個方法的特定實現,則它被稱為方法覆蓋。所以方法覆蓋有兩個前提條件:繼承和子父類中方法名稱相同。

Java方法覆蓋的用法

  • 方法重寫用于提供有別于超類提供的方法的特定實現。
  • 方法重寫用于運行時多態性。

Java方法覆蓋的規則

  • 方法必須與父類中的名稱相同。
  • 方法必須具有與父類中相同的參數。
  • 必須是IS-A關系(繼承)。
  • 理解沒有方法覆蓋的問題

    下面讓我們來了解如果在程序中不使用方法覆蓋可能面臨的問題。

    class Vehicle {void run() { System.out.println("Vehicle is running"); } } class Bike extends Vehicle { public static void main(String args[]) { Bike obj = new Bike(); obj.run(); } } Java

    執行上面代碼,輸出結果如下 -

    Vehicle is running Java

    問題是,必須在子類中提供一個run()方法,這就是為什么要使用方法覆蓋。

    方法覆蓋的示例

    在下面的這個例子中,在父類中和子類中都定義了run方法,但子類中有一些特定的實現。 方法的名稱和參數是相同的,并且類之間有IS-A關系,因此這里run方法被覆蓋了。

    class Vehicle {void run() { System.out.println("Vehicle is running"); } } class Bike2 extends Vehicle { void run() { System.out.println("Bike is running safely"); } public static void main(String args[]) { Bike2 obj = new Bike2(); obj.run(); } } Java

    執行輸出結果如下 -

    Bike is running safely Java

    Java方法重寫的實例

    考慮下面一個真實應用的情況,Bank是一個提供獲取利率的功能的類。 但是,利息率因銀行不同而有所區別。 例如,SBI,ICICI和AXIS銀行可以提供8%,7%和9%的利率。

    class Bank {int getRateOfInterest() { return 0; } } class SBI extends Bank { int getRateOfInterest() { return 8; } } class ICICI extends Bank { int getRateOfInterest() { return 7; } } class AXIS extends Bank { int getRateOfInterest() { return 9; } } class Test2 { public static void main(String args[]) { SBI s = new SBI(); ICICI i = new ICICI(); AXIS a = new AXIS(); System.out.println("SBI Rate of Interest: " + s.getRateOfInterest()); System.out.println("ICICI Rate of Interest: " + i.getRateOfInterest()); System.out.println("AXIS Rate of Interest: " + a.getRateOfInterest()); } } Java

    執行輸出結果如下 -

    SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 Java

    問題:可以覆蓋靜態方法嗎?

    答: 這是不可以的,靜態方法不能被覆蓋。可以通過運行時多態來證明不能覆蓋,在稍后章節中將學習它。

    問題: 為什么不能覆蓋靜態方法?
    答: 因為靜態方法是綁定類,而實例方法綁定對象。 靜態屬于類區域,實例屬于堆區域。

    問題:可以重寫java main方法嗎?

    答: 這是不可以的,因為main是一個靜態方法。

    java方法重載和方法重寫之間的區別:

        • 方法重載和覆蓋的區別?
        • java中的方法重載和方法重寫有很多區別。 下面給出了方法重載和方法覆蓋之間的差異列表:
    編號方法重載方法重寫
    1方法重載用于提高程序的可讀性。方法重寫用于提供已經由其超類提供的方法的特定實現。
    2方法重載在類內執行。方法重寫發生在具有IS-A(繼承)關系的兩個類中。
    3在方法重載的情況下,參數必須不同。在方法重寫的情況下,參數必須相同。
    4方法重載是編譯時多態性的例子。方法重寫/覆蓋是運行時多態性的例子。
    5在java中,方法重載不能僅通過改變方法的返回類型來執行。方法重載中的返回類型可以相同或不同。 但是必須更改參數類型。在方法重寫/覆蓋中返回類型必須相同或協變。

    Java方法重載示例

    ?

    class OverloadingExample {static int add(int a, int b) { return a + b; } static int add(int a, int b, int c) { return a + b + c; } } Java

    Java方法覆蓋示例

    class Animal {void eat() { System.out.println("eating..."); } } class Dog extends Animal { void eat() { System.out.println("eating bread..."); } }

    轉載于:https://www.cnblogs.com/yumo1627129/p/7170570.html

    總結

    以上是生活随笔為你收集整理的java的重写的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。