亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java方法的覆蓋與隱藏的區(qū)別分析

 更新時間:2013年04月27日 10:11:40   作者:  
本篇文章介紹了,關(guān)于Java方法的覆蓋與隱藏的區(qū)別分析。需要的朋友參考下

關(guān)于隱藏和覆蓋的區(qū)別,要提到RTTI(run-time type identification)(運行期類型檢查),也就是運行期的多態(tài),當(dāng)一個父類引用指向子類對象的時候,請看下面我編寫的一段代碼:

復(fù)制代碼 代碼如下:

public class RunTime {

    public static void main(String[] args) {
        Animal a = new Cat();
        System.out.println(a.A);
        System.out.println(a.b);
        a.voice();
        a.method();

    }

}

class Dog extends Animal {
    public int b = 3;
    public static int A = 3;
    public static void method(){
        System.out.println("狗");
    }
    public void voice() {
        System.out.println("狗叫");
    }
}

class Cat extends Animal {
    public int b = 4;
    public static int A = 4;
    public static void method(){
        System.out.println("貓");
    }
    public void voice() {
        System.out.println("貓叫");
    }
}

class Animal {
    public int b = 0;
    public static int A = 0;
    public static void method(){
        System.out.println("動物");
    }
    public void voice() {
        System.out.println("動物叫");
    }
}


輸出結(jié)果是:
0
0
貓叫
動物

您可以看到,當(dāng)父類Animal的引用a指向子類Dog時,RTTI在運行期會自動確定該引用的真是類型,當(dāng)子類  覆蓋  了父類的方法時,則直接調(diào)用子類的方法,打印出“貓叫”;然而非靜態(tài)的方法在子類中重寫的話就是被覆蓋,而靜態(tài)的方法被子類重寫的話就是隱藏,另外,靜態(tài)變量和成員變量也是被隱藏,而RTTI是只針對覆蓋,不針對影藏,所以,靜態(tài)變量 A 和 非靜態(tài)變量 b 以及靜態(tài)方法method() 均不通過RTTI,是哪個類的引用就調(diào)用誰的靜態(tài)方法,成員變量,而這里是父類Animal的引用,所以直接調(diào)用父類Animal中的方法以及成員變量。所以靜態(tài)方法 method(),  靜態(tài)變量 A 和成員變量 b 打印結(jié)果全是父類中的。只用被覆蓋的非靜態(tài)方法voice()才打印子類的。

相關(guān)文章

  • Spring Boot整合Redis的完整步驟

    Spring Boot整合Redis的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合Redis的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • springboot整合mail實現(xiàn)郵箱的發(fā)送功能

    springboot整合mail實現(xiàn)郵箱的發(fā)送功能

    本文分步驟給大家介紹springboot整合mail實現(xiàn)郵箱的發(fā)送功能,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • kotlin快速入門之標(biāo)準函數(shù)與靜態(tài)方法

    kotlin快速入門之標(biāo)準函數(shù)與靜態(tài)方法

    學(xué)完了Kotlin的基礎(chǔ)知識,是時候來來學(xué)習(xí) Kotlin的標(biāo)準函數(shù)和靜態(tài)方法了,下面這篇文章主要給大家介紹了關(guān)于kotlin快速入門之標(biāo)準函數(shù)與靜態(tài)方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • java 如何從字符串里面提取時間

    java 如何從字符串里面提取時間

    這篇文章主要介紹了java實現(xiàn)從字符串里面提取時間的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中的HashMap和Hashtable區(qū)別解析

    Java中的HashMap和Hashtable區(qū)別解析

    這篇文章主要介紹了Java中的HashMap和Hashtable區(qū)別解析,HashMap和Hashtable都實現(xiàn)了Map接口,但決定用哪一個之前先要弄清楚它們之間的區(qū)別,主要的區(qū)別有線程安全性、同步和速度,需要的朋友可以參考下
    2023-11-11
  • Java中Jedis基本使用

    Java中Jedis基本使用

    Redis的Java實現(xiàn)的客戶端,本文主要介紹了Java中Jedis基本使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • spring初始化源碼之關(guān)鍵類和擴展接口詳解

    spring初始化源碼之關(guān)鍵類和擴展接口詳解

    Spring就是一個大工廠,可以將所有對象的創(chuàng)建和依賴關(guān)系的維護交給Spring管理,下面這篇文章主要給大家介紹了關(guān)于spring初始化源碼之關(guān)鍵類和擴展接口的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 三種Spring BeanName生成器,你了解嗎

    三種Spring BeanName生成器,你了解嗎

    無論我們是通過 XML 文件,還是 Java 代碼,亦或是包掃描的方式去注冊 Bean,都可以不設(shè)置BeanName,而Spring均會為之提供默認的 beanName,本文我們就來看看 Spring 中三種處理不同情況的 beanName生成器吧
    2023-09-09
  • java注解之運行時修改字段的注解值操作

    java注解之運行時修改字段的注解值操作

    這篇文章主要介紹了java注解之運行時修改字段的注解值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring?Boot?整合持久層之Spring Data JPA

    Spring?Boot?整合持久層之Spring Data JPA

    在介紹Spring Data JPA的時候,我們首先認識下Hibernate。Hibernate是數(shù)據(jù)訪問解決技術(shù)的絕對霸主,使用O/R映射技術(shù)實現(xiàn)數(shù)據(jù)訪問,O/R映射即將領(lǐng)域模型類和數(shù)據(jù)庫的表進行映射,通過程序操作對象而實現(xiàn)表數(shù)據(jù)操作的能力,讓數(shù)據(jù)訪問操作無須關(guān)注數(shù)據(jù)庫相關(guān)的技術(shù)
    2022-08-08

最新評論