亚洲AV日韩AⅤ综合手机在线观看,激情婷婷久久综合色,欧美色五月婷婷久久,久久国产精品99久久人人澡

  • <abbr id="uk6uq"><abbr id="uk6uq"></abbr></abbr>
  • <tbody id="uk6uq"></tbody>
  • Java方法繼承、重載和覆蓋總結(jié)

    時間:2024-05-09 03:30:52 SUN認證 我要投稿
    • 相關(guān)推薦

    Java方法繼承、重載和覆蓋總結(jié)

      Java 平臺是基于 Java 語言的平臺。這樣的平臺非常流行。因此微軟公司推出了與之競爭的.NET平臺以及模仿Java的C#語言。下面文章介紹了Java方法繼承、重載、覆蓋總結(jié):

    Java方法繼承、重載和覆蓋總結(jié)

      1、方法繼承:

      利用extends關(guān)鍵字一個方法繼承另一個方法,而且只能直接繼承一個類。

      * 當Sub類和Base類在同一個包時Sub類繼承Base類中的public/protected/默認級別的變量個方法

      * 在不同包時繼承public/protected級別的變量和方法。

      2、方法重載:

      如果有兩個方法的方法名相同,但參數(shù)不一致,哪么可以說一個方法是另一個方法的重載。

      * 方法名相同

      * 方法的參數(shù)類型,個數(shù)順序至少有一項不同

      * 方法的返回類型可以不相同

      * 方法的修飾符可以不相同

      * main方法也可以被重載

      3、方法覆蓋:

      如果在子類中定義一個方法,其名稱、返回類型及參數(shù)簽名正好與父類中某個方法的名稱、返回類型及參數(shù)簽名相匹配,那么可以說,子類的方法覆蓋了父類的方法。

      * 子類的方法名稱返回類型及參數(shù)簽名 必須與父類的一致

      * 子類方法不能縮小父類方法的訪問權(quán)限

      * 子類方法不能拋出比父類方法更多的異常

      * 方法覆蓋只存在于子類和父類之間,同一個類中只能重載

      * 父類的靜態(tài)方法不能被子類覆蓋為非靜態(tài)方法

      * 子類可以定義于父類的靜態(tài)方法同名的靜態(tài)方法,以便在子類中隱藏父類的靜態(tài)方法(滿足覆蓋約束), 而且Java虛擬機把靜態(tài)方法和所屬的類綁定,而把實例方法和所屬的實例綁定。

      * 父類的非靜態(tài)方法不能被子類覆蓋為靜態(tài)方法

      * 父類的私有方法不能被子類覆蓋

      * 父類的抽象方法可以被子類通過兩種途徑覆蓋(即實現(xiàn)和覆蓋)(P169)

      * 父類的非抽象方法可以被覆蓋為抽象方法

      4、Super關(guān)鍵字:

      super和this關(guān)鍵字都可以用來覆蓋Java語言的默認作用域,使被屏蔽的方法或變量變?yōu)榭梢?三種情況下的不可見 P171)。

      * 父類的成員變量和方法為private使用super訪問編譯出錯

      * 在類的構(gòu)造方法種,通過super語句調(diào)用這個類的父類的構(gòu)造方法

      * 在子類種訪問父類的被屏蔽的方法和屬性

      * 只能在構(gòu)造方法或?qū)嵗椒▋?nèi)使用super關(guān)鍵字,而在靜態(tài)方法和靜態(tài)代碼塊內(nèi)不能使用super

      5、多態(tài):

      * 對于一個引用類型的變量,Java編譯器按照它的聲明的類型來處理

      * 對于一個引用類型的變量,運行時Java虛擬機按照它的實際引用的對象來處理

      * 運行時環(huán)境中,通過引用類型變量來訪問所引用對象的方法和屬性時,Java虛擬機采用以下綁定規(guī)則

      1)實例方法與引用變量實際引用的對象的方法綁定,屬于動態(tài)綁定

      2)靜態(tài)方法與引用變量所聲明的類型的方法綁定,屬于靜態(tài)綁定

      3)成員變量(包括靜態(tài)和實例變量)與引用變量所聲明的類型的成員變量綁定,屬于靜態(tài)綁定

      Java代碼

      class Super {

      static int stat = 1;

      int nonStat = 2;

      static int statMethod(){

      return 3;

      }

      int nonStatMethod(){

      return 4;

      }

      }

      public class Sub extends Super {

      static int stat = 10;

      int nonStat = 20;

      static int statMethod(){

      return 30;

      }

      int nonStatMethod(){

      return 40;

      }

      public static void main(String args) {

      Super s = new Sub();

      System.out.println("Static is " + s.stat);

      System.out.println("Non-Static is " + s.nonStat);

      System.out.println("Static method is " + s.statMethod() );

      System.out.println("Non-Static method is " + s.nonStatMethod() );

      Sub sub = (Sub)s;

      System.out.println("Static is " + sub.stat);

      System.out.println("Non-Static is " + sub.nonStat);

      System.out.println("Static method is " + sub.statMethod() );

      System.out.println("Non-Static method is " + sub.nonStatMethod() );

      }

      }

      輸出結(jié)果:

      Static is 1

      Non-Static is 2

      Static method is 3

      Non-Static method is 40

      Static is 10

      Non-Static is 20

      Static method is 30

      Non-Static method is 40

    【Java方法繼承、重載和覆蓋總結(jié)】相關(guān)文章:

    Java方法(函數(shù))傳值和傳引用的問題03-17

    Java枚舉的常用方法03-16

    Java線程同步的方法03-17

    Java中日期的處理方法03-09

    JAVA認證開源技術(shù):關(guān)于Java的對象equals方法03-04

    Java數(shù)組操作方法大全03-04

    Java獲取當前的系統(tǒng)時間的方法03-04

    Java開發(fā)Tomcat部署項目方法03-04

    Java動態(tài)代理實現(xiàn)AOP的方法03-16