五月天青色头像情侣网名,国产亚洲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ó)家法律
博兴县| 东源县| 宜州市| 长宁县| 兴安县| 大英县| 巩留县| 商河县| 铅山县| 靖西县| 郸城县| 清水河县| 台山市| 南召县| 集贤县| 宜君县| 闽清县| 宽甸| 武义县| 五家渠市| 灌南县| 彭山县| 丹阳市| 平昌县| 台北市| 沂源县| 青河县| 东台市| 宣汉县| 石景山区| 泽普县| 岳池县| 绥阳县| 竹山县| 巴彦淖尔市| 普格县| 大厂| 永州市| 清镇市| 朝阳市| 宝坻区|