欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java面向?qū)ο蟆净咎卣髦鄳B(tài)】-創(chuàng)新互聯(lián)

前言

封裝是面向?qū)ο蟮幕A(chǔ); 繼承是在封裝的基礎(chǔ)上,實(shí)現(xiàn)代碼的復(fù)用性;

創(chuàng)新互聯(lián)專(zhuān)注于尤溪企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城開(kāi)發(fā)。尤溪網(wǎng)站建設(shè)公司,為尤溪等地區(qū)提供建站服務(wù)。全流程按需求定制設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

而多態(tài)考量的是代碼的豐富度。

多態(tài)的含義:

相同的行為,不同的實(shí)現(xiàn)。

(比如:買(mǎi)菜,買(mǎi)青菜買(mǎi)白菜都是買(mǎi)菜行為)

條件:

1.有繼承

2.有同名方法

注意:

1、多態(tài)指的是行為的多樣性,沒(méi)有屬性多態(tài)這一說(shuō);

2、相同的行為指的是同名方法,也就是說(shuō)方法名相同,我們就認(rèn)為這是相同的行為。

由此,我們前面學(xué)習(xí)的方法重載和方法重寫(xiě)其實(shí)都是(靜態(tài))多態(tài)的表現(xiàn)。


多態(tài)分為兩種: 靜態(tài)多態(tài)

在編譯期間就可以確定要執(zhí)行的是何種類(lèi)型的對(duì)象以及該對(duì)象的何種行為,運(yùn)行期不會(huì)有改變的情況。

我們?cè)谇懊鎸W(xué)過(guò)的方法的重載和方法的重寫(xiě)都是屬于靜態(tài)多態(tài)。靜態(tài)多態(tài)雖然有豐富度的體現(xiàn),但是是不夠的,因?yàn)樗诰幾g期就把執(zhí)行效果固定下來(lái)了。而我們以后用得更多的是動(dòng)態(tài)多態(tài)。

動(dòng)態(tài)多態(tài)

在運(yùn)行期,根據(jù)綁定對(duì)象的不同,才能確定多態(tài)方法執(zhí)行的效果。

動(dòng)態(tài)多態(tài)是由兩個(gè)技術(shù)合并使用才有的效果:動(dòng)態(tài)綁定技術(shù) + 方法的重寫(xiě)。 ?

動(dòng)態(tài)綁定技術(shù) 從現(xiàn)象上看效果:

本類(lèi)引用 指向 本類(lèi)對(duì)象;

父類(lèi)引用 指向 子類(lèi)對(duì)象;

在Java當(dāng)中只有這兩種情況,也就是說(shuō)賦值符號(hào)左右兩端如果類(lèi)型不一致,那么只有后面這種情況。

從內(nèi)存上解釋

為什么父類(lèi)引用可以指向子類(lèi)對(duì)象呢?

既然是父子關(guān)系,還是在做繼承,那么還是跟內(nèi)存疊加有關(guān)系。

每一個(gè)子類(lèi)對(duì)象的上半截都是一個(gè)完整的父類(lèi)對(duì)象部分,當(dāng)父類(lèi)引用指過(guò)去的時(shí)候,是能夠看到完整的父類(lèi)對(duì)象信息的。

沒(méi)有繼承關(guān)系的類(lèi),不能保證A類(lèi)引用指到B類(lèi)對(duì)象,能看到B類(lèi)對(duì)象中有A類(lèi)定義的內(nèi)容,所以不允許!

子類(lèi)引用指向父類(lèi)對(duì)象的時(shí)候,父類(lèi)對(duì)象里面沒(méi)有子類(lèi)特有部分,所以缺失了內(nèi)容,也不允許!

從場(chǎng)景上解釋

一個(gè)對(duì)象屬于子類(lèi),一定也屬于它的父類(lèi)。子和父是is-a關(guān)系,這是說(shuō)得通的。

但是一個(gè)對(duì)象屬于父類(lèi),你能保證它一定屬于子類(lèi)嗎?

而沒(méi)有繼承關(guān)系的,那就更說(shuō)不通的了,比如:指鹿為馬。 明明是一個(gè)鹿的對(duì)象,你偏要用馬的引用去指向它,肯定是不對(duì)的。你可以說(shuō)它是動(dòng)物、可以說(shuō)它是寵物、因?yàn)槁筰s-a動(dòng)物;鹿 is-a 寵物;都是可行的,但鹿 is not a 馬。

動(dòng)態(tài)體現(xiàn)在哪兒?

如果我們手上現(xiàn)在擁有一個(gè)父類(lèi)引用,那么我們就不能確定這個(gè)引用到底是指向哪一個(gè)具體的對(duì)象的了。

它既可能指向自己類(lèi)型的對(duì)象,也可能指向自己的各種子類(lèi)對(duì)象。

而自己的某個(gè)方法,是可以被子類(lèi)重寫(xiě)成不同的實(shí)現(xiàn)效果的。那么用這個(gè)引用執(zhí)行重寫(xiě)方法,也就不能確定到底重寫(xiě)前還是重寫(xiě)后,是A子類(lèi)重寫(xiě)后,還是其它子類(lèi)重寫(xiě)后的效果了。只有等程序運(yùn)行起來(lái)以后,根據(jù)該引用具體綁定的對(duì)象到底是誰(shuí),才能夠運(yùn)行出具體的效果。--- 這就是動(dòng)態(tài)的體現(xiàn)。

轉(zhuǎn)型技術(shù)

賦值符號(hào)左右兩端數(shù)據(jù)類(lèi)型不一致,就會(huì)發(fā)生數(shù)據(jù)類(lèi)型轉(zhuǎn)換。

父類(lèi)引用 = 子類(lèi)對(duì)象 也是兩端數(shù)據(jù)類(lèi)型不一致,所以也屬于轉(zhuǎn)型技術(shù)。

基本數(shù)據(jù)類(lèi)型轉(zhuǎn)型技術(shù)和引用數(shù)據(jù)類(lèi)型轉(zhuǎn)型技術(shù) 基本數(shù)據(jù)類(lèi)型轉(zhuǎn)型技術(shù)

1、前提:不是所有基本數(shù)據(jù)類(lèi)型之間都能夠進(jìn)行轉(zhuǎn)型,boolean不參與的;

2、自動(dòng)類(lèi)型轉(zhuǎn)換 小類(lèi)型值 賦值給 大類(lèi)型的變量

強(qiáng)調(diào):這里的大小 是 數(shù)據(jù)類(lèi)型能表示的范圍的大小,而不是空間的大小。

int num = 'A'; float f = num; double d = 100;

效果:不需要使用任何特殊語(yǔ)法,直接完成類(lèi)型轉(zhuǎn)換并且賦值成功。

3、強(qiáng)制類(lèi)型轉(zhuǎn)換 大類(lèi)型的值 賦值給 小類(lèi)型的變量

效果:

3-1、直接書(shū)寫(xiě)后,編譯報(bào)錯(cuò);

3-2、使用(目標(biāo)類(lèi)型)的強(qiáng)轉(zhuǎn)語(yǔ)法,編譯才能夠通過(guò);

3-3、運(yùn)行的效果是有風(fēng)險(xiǎn)性的,精度有可能丟失。

引用數(shù)據(jù)類(lèi)型轉(zhuǎn)型技術(shù)

1、前提:不是所有引用數(shù)據(jù)類(lèi)型之間都能夠做轉(zhuǎn)型,只有有繼承關(guān)系的類(lèi)型之間才可以;

2、自動(dòng)類(lèi)型轉(zhuǎn)換 子類(lèi)對(duì)象 賦值給 父類(lèi)引用 子類(lèi)表示的范圍 是小于 父類(lèi)表示的范圍,所以仍然是把小的數(shù)據(jù)值交給大的變量。與基本數(shù)據(jù)類(lèi)型的自動(dòng)轉(zhuǎn)換要求是一摸一樣的。

只是說(shuō)它有另一個(gè)特殊的名字,又叫做“向上轉(zhuǎn)型”而已。因?yàn)樵诶^承樹(shù)上,父類(lèi)在上,子類(lèi)在下;

效果:不需要使用任何特殊語(yǔ)法,直接完成類(lèi)型轉(zhuǎn)換并且賦值成功。

3、強(qiáng)制類(lèi)型轉(zhuǎn)換 大類(lèi)型的值 賦值給 小類(lèi)型的引用? 又被稱(chēng)為"向下轉(zhuǎn)型".

效果:

1、直接書(shū)寫(xiě)后,編譯報(bào)錯(cuò);

2、使用(目標(biāo)類(lèi)型)的強(qiáng)轉(zhuǎn)語(yǔ)法,編譯才能夠通過(guò);

3、運(yùn)行的效果是有風(fēng)險(xiǎn)性的,風(fēng)險(xiǎn)性是運(yùn)行時(shí)報(bào)錯(cuò)(ClassCastException),中斷程序的執(zhí)行。

對(duì)風(fēng)險(xiǎn)性探討:

1、我們發(fā)現(xiàn)并不是每次強(qiáng)轉(zhuǎn)都一定成功,那么情況時(shí)如何的呢?

要想強(qiáng)轉(zhuǎn)以后,編譯通過(guò)且運(yùn)行也通過(guò),只有一種情況,那就是:最終的內(nèi)存結(jié)果只能是本類(lèi)引用指向本類(lèi)對(duì)象。

2、強(qiáng)轉(zhuǎn)語(yǔ)法只是在編譯期進(jìn)行一個(gè)強(qiáng)制性的語(yǔ)法說(shuō)明,說(shuō)明什么呢?告訴編譯器,我這個(gè)父類(lèi)引用確實(shí)是指向的某種子類(lèi)對(duì)象。

3、但是運(yùn)行起來(lái)以后,如果滿足你的強(qiáng)制說(shuō)明,那么沒(méi)有問(wèn)題運(yùn)行成功;如果不滿足你的強(qiáng)制說(shuō)明(欺騙了編譯器),那么就會(huì)運(yùn)行失敗,報(bào)出ClassCastException。

比如:水果類(lèi)? 香蕉類(lèi)? 豬肉類(lèi)? 香蕉類(lèi)強(qiáng)轉(zhuǎn)水果類(lèi)? 可以成功? 但是豬肉類(lèi)和水果類(lèi)不是is-a關(guān)系,所以豬肉類(lèi)強(qiáng)轉(zhuǎn) 水果類(lèi)會(huì)運(yùn)行失敗。

強(qiáng)調(diào):強(qiáng)轉(zhuǎn)語(yǔ)法不是把A類(lèi)對(duì)象變成B對(duì)象,只是在編譯期達(dá)成的一個(gè)口頭約束而已。

父類(lèi)引用指向子類(lèi)對(duì)象,我們能訪問(wèn)什么呢?

1、父類(lèi)引用只能看到子類(lèi)對(duì)象從父類(lèi)繼承而來(lái)的屬性和行為,當(dāng)然要受訪問(wèn)修飾符限制;注意:子類(lèi)對(duì)象身上是有子類(lèi)特有屬性和行為的,只是站在父類(lèi)引用的角度上看不到而已。

2、要想看到,要把引用換成子類(lèi)引用,這個(gè)時(shí)候要使用強(qiáng)轉(zhuǎn)語(yǔ)法,同時(shí)還必須保證運(yùn)行起來(lái)以后真正給出的對(duì)象是符合強(qiáng)轉(zhuǎn)語(yǔ)法的。

3、特例是在父類(lèi)中定義,被子類(lèi)重寫(xiě)的行為。由于這個(gè)行為是定義在父類(lèi)中,所以父類(lèi)引用能看到;而對(duì)象又是子類(lèi)對(duì)象,所以執(zhí)行的效果是子類(lèi)重寫(xiě)后的效果。

練習(xí):書(shū)寫(xiě)一個(gè)寵物類(lèi)Pet,擁有一個(gè)叫的行為;書(shū)寫(xiě)Pet的兩個(gè)子類(lèi)Dog和Cat,分別實(shí)現(xiàn)叫的行為。再書(shū)寫(xiě)一個(gè)主人類(lèi)Master,擁有一個(gè)寵物對(duì)象,主人有一個(gè)行為是喂養(yǎng)feed,在該方法中調(diào)用自己寵物叫的行為。最后,在main方法中測(cè)試。

instanceof

在練習(xí)當(dāng)中,我們看到在有的場(chǎng)景里面,確實(shí)會(huì)存在需要強(qiáng)轉(zhuǎn)的情況。但是,強(qiáng)轉(zhuǎn)又有風(fēng)險(xiǎn)度,所以,我們需要先判斷類(lèi)型是否匹配,這就要用到instanceof了。

instanceof是一個(gè)關(guān)鍵字,也是一個(gè)運(yùn)算符。它是專(zhuān)門(mén)用來(lái)判斷一個(gè)對(duì)象是否屬于某個(gè)類(lèi)型的,運(yùn)算后的結(jié)果是boolean型結(jié)果。

語(yǔ)法: 對(duì)象 instanceof 類(lèi)型

instanceof是專(zhuān)門(mén)用來(lái)規(guī)避強(qiáng)轉(zhuǎn)帶來(lái)的ClassCastException風(fēng)險(xiǎn)的,類(lèi)似于非空判斷專(zhuān)門(mén)用來(lái)解決NullPointerException風(fēng)險(xiǎn)的。

多態(tài)的應(yīng)用

多態(tài)參數(shù)

當(dāng)我們?cè)谠O(shè)計(jì)參數(shù)的時(shí)候,把參數(shù)的類(lèi)型設(shè)計(jì)為父類(lèi)類(lèi)型,那么所有的子類(lèi)對(duì)象都能夠通過(guò)這個(gè)參數(shù),傳遞到這個(gè)方法里面去。

這樣的多態(tài)應(yīng)用帶來(lái)了面向?qū)ο笤O(shè)計(jì)中非常重要的一個(gè)原則:開(kāi)閉原則。

開(kāi)閉原則:Software should be opened for extension, but closed for modification。

軟件對(duì)于擴(kuò)展來(lái)說(shuō)應(yīng)該是開(kāi)放的,對(duì)于修改來(lái)說(shuō)應(yīng)該是關(guān)閉。

也就是說(shuō)好的軟件設(shè)計(jì),應(yīng)該能夠可以隨著業(yè)務(wù)的擴(kuò)展去增加新的功能,但是不應(yīng)該修改已有的功能。

多態(tài)集合

int[] array = new int[10];

Object[] arrayObj = new Object[10];

可以解決數(shù)組只能存放同一數(shù)據(jù)類(lèi)型元素的問(wèn)題。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

新聞名稱(chēng):Java面向?qū)ο蟆净咎卣髦鄳B(tài)】-創(chuàng)新互聯(lián)
本文地址:http://aaarwkj.com/article16/jesdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)品牌網(wǎng)站設(shè)計(jì)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)外貿(mào)建站、自適應(yīng)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
正在播放老肥熟妇露脸| 日韩免费系列一区二区| 国产亚洲一区二区高清| 久久热福利视频就在这里| 老牛av一区二区三区| 国产精品亚洲av性色| 日韩精品人妻一区二区网站 | 国产有码视频一区二区三区| 日韩欧美一区精品在线观看| 久久亚洲精品中文字幕一| 午夜影院在线免费观看三区| 丰满人妻被猛烈进入中文版| 国产麻豆精品传媒av| 欧美一区二区黑人巨大| 香蕉夜夜草草久久亚洲香蕉| 91精品日日躁夜夜躁欧美| 日韩精品有码在线视频免费观看| 亚洲国产成人精品av在线| 漂亮人妻中文字幕av| 中国女人内射69xx| 成人黄片在线免费播放| 国产精品久久一国产精品| 国产精品三级电影网| 国产三级网站在线观看| 美女一区二区三区日本美女在线观看 | 日本中文字幕在线播放一区| 91日韩国产中文字幕| 日韩亚洲天堂视频免费观看| 精品国产乱码一区二区三区四区| 国产av超爽剧情系列| 日韩精品一区福利合集| 91久久福利国产成人精品| 日韩一二三区欧美四五区新| 中文字幕一区免费视频| 国产丝袜美腿一二三区| 色悠悠色综合视频在线| 国产乱码免费一区二区三区| 国产亚洲加勒比久久精品| 日本一区二区三区日韩欧美| 九色国产一区二区三区| 最新日韩欧美一区二区|