麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

Java方法的覆蓋與隱藏的區別分析

2019-11-26 16:09:49
字體:
來源:轉載
供稿:網友

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

復制代碼 代碼如下:

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("動物叫");
    }
}


輸出結果是:
0
0
貓叫
動物

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本在线视频免费观看 | 国产做爰全免费的视频黑人 | 亚洲欧美国产视频 | 国产一区二区三区在线免费 | 天天色人人爱 | 99国内精品视频 | 欧美三级日本三级少妇99 | 成码无人av片在线观看网站 | www.国产.com | 久久久久久久久久久国产精品 | 亚洲成人在线视频网站 | 在线亚洲免费视频 | 免费h片 | 欧美成人三级视频 | 亚洲一区二区三区高清 | 欧美一级做一级爱a做片性 91在线视频观看 | 色综合精品 | 国产免费一区二区三区视频 | teensexhd| 免费黄色小视频网站 | 视频一区二区视频 | 国产在线1区 | 免费国产一级特黄久久 | 精品国产91久久久久久 | japan护士性xxxⅹhd | 97人操| 欧美无限资源 | 毛片免费观看完整版 | 精国产品一区二区三区四季综 | 欧美天堂一区 | 国产福利视频 | 自拍偷拍999 | 国产一级aa大片毛片 | 日本在线播放一区二区 | 欧美一级做性受免费大片免费 | 最新福利在线 | 操操操日日日干干干 | 91在线播放国产 | 国产在线免费 | 激情福利视频 | 国产毛片网 |