五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

java多態(tài)的理解

2020-11-29 15:57 作者:小垃圾kiki  | 我要投稿

java多態(tài)

如果放在生活中多態(tài)就是比如做一件事情,不同人有不同的實(shí)現(xiàn)方式。

但是在java這里指的多態(tài),它設(shè)定了限制,必須是多個(gè)子類繼承同一個(gè)父類實(shí)現(xiàn)方法的重寫。

同時(shí)創(chuàng)建的對(duì)象的時(shí)候new出來的子類同時(shí)指定父類引用。(這樣就造成了生成的對(duì)象只能調(diào)用和父類共有的方法,不能調(diào)用子類特有的方法)。


多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

Animal am = new Cat();語句在堆內(nèi)存中開辟了子類(Cat)的對(duì)象,并把棧內(nèi)存中的父類(Animal)的引用指向了這個(gè)Cat對(duì)象。

執(zhí)行強(qiáng)轉(zhuǎn)語句Cat ct = (Cat)am;之后,ct(棧里面聲明的Cat類型的變量)就指向最開始在堆內(nèi)存中創(chuàng)建的那個(gè)Cat類型的對(duì)象了。

多態(tài)存在的三個(gè)必要條件

  • 繼承

  • 重寫

  • 父類引用指向子類對(duì)象

Parent p = new Child();

成員變量 編譯看左邊(父類),運(yùn)行看左邊(父類) 成員方法 編譯看左邊(父類),運(yùn)行看右邊(子類)。動(dòng)態(tài)綁定 靜態(tài)方法 編譯看左邊(父類),運(yùn)行看左邊(父類)。

(靜態(tài)和類相關(guān),算不上重寫,所以,訪問還是左邊的) 只有非靜態(tài)的成員方法,編譯看左邊,運(yùn)行看右邊

多態(tài)的弊端:多態(tài)后不能使用子類特有的屬性和方法。

如果我們非要想用也是可以的

那我們就可以把這個(gè)父類引用指向了子類對(duì)象的家伙am再?gòu)?qiáng)制變回Cat類型。


package com.lky.h1;

class Animal {
? ?int num = 10;
? ?static int age = 20;
? ?public void eat() {
? ? ? ?System.out.println("動(dòng)物吃飯");
? ?}

? ?public static void sleep() {
? ? ? ?System.out.println("動(dòng)物在睡覺");
? ?}

? ?public void run(){
? ? ? ?System.out.println("動(dòng)物在奔跑");
? ?}
}
class Cat extends Animal {
? ?int num = 80;
? ?static int age = 90;
? ?String name = "tomCat";
? ?public void eat() {
? ? ? ?System.out.println("貓吃飯");
? ?}
? ?public static void sleep() {
? ? ? ?System.out.println("貓?jiān)谒X");
? ?}
? ?public void catchMouse() {
? ? ? ?System.out.println("貓?jiān)谧ダ鲜?#34;);
? ?}

}


public class Test3 {
? ?public static void main(String[] args) {
? ? ? ?Animal am = new Cat();
? ? ? ?am.eat();
? ? ? ?am.sleep();
? ? ? ?am.run();
? ? ? ?//am.catchMouse();這里先注釋掉,等會(huì)會(huì)說明
? ? ? ?//System.out.println(am.name);//這里先注釋,待會(huì)說明
? ? ? ?System.out.println(am.num);
? ? ? ?System.out.println(am.age);
? ?}
}

參考文章

對(duì)于向上轉(zhuǎn)型,程序會(huì)自動(dòng)完成,而對(duì)于向下轉(zhuǎn)型時(shí),必須明確的指明要轉(zhuǎn)型的子類類型。

向上轉(zhuǎn)型,new 了一個(gè)子類可以指向父類

向下轉(zhuǎn)型,把指向父類的轉(zhuǎn)成子類

我這里的向下轉(zhuǎn)型指的是把向上轉(zhuǎn)型返回的對(duì)象指向強(qiáng)轉(zhuǎn)成子類,我可以沒有說new了一個(gè)父類指向子類,現(xiàn)實(shí)中不行,java也是不行的。



java多態(tài)的理解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
洛浦县| 伊金霍洛旗| 曲阳县| 普定县| 墨脱县| 丽水市| 南岸区| 泰和县| 雷州市| 囊谦县| 鹿泉市| 壶关县| 石狮市| 舞阳县| 新竹市| 鄂州市| 奈曼旗| 来安县| 隆子县| 肃宁县| 宽城| 会泽县| 桂林市| 新建县| 广饶县| 潜江市| 梓潼县| 双鸭山市| 阿勒泰市| 平乡县| 涞水县| 玛曲县| 永城市| 天水市| 五家渠市| 金溪县| 石棉县| 满城县| 文昌市| 锦屏县| 喀喇沁旗|