最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
黎平县| 闽清县| 杨浦区| 乌恰县| 平昌县| 疏勒县| 怀远县| 江孜县| 濮阳市| 光泽县| 安乡县| 玉田县| 天峻县| 大悟县| 偃师市| 赣榆县| 蓬莱市| 饶河县| 从化市| 贡觉县| 长子县| 忻城县| 台湾省| 高青县| 台北县| 唐河县| 黄冈市| 鱼台县| 中宁县| 田林县| 天峨县| 武清区| 安多县| 华阴市| 区。| 兰西县| 黎川县| 横峰县| 泸溪县| 防城港市| 岳阳市|