摘要:引用數(shù)據(jù)類型轉(zhuǎn)換由的繼承和向上轉(zhuǎn)型,子類可以很自然地轉(zhuǎn)換為父類對(duì)象,即父類類型可以直接引用子類對(duì)象,但是子類類型不能直接引用父類對(duì)象,需要進(jìn)行強(qiáng)制轉(zhuǎn)換。但是將功能較弱的類型父類強(qiáng)制轉(zhuǎn)功能較強(qiáng)的對(duì)象子類時(shí),就不一定可以行了。
1、引用數(shù)據(jù)類型轉(zhuǎn)換:
由java的繼承和向上轉(zhuǎn)型,子類可以很自然地轉(zhuǎn)換為父類對(duì)象,即父類類型可以直接引用子類對(duì)象,但是子類類型不能直接引用父類對(duì)象,需要進(jìn)行強(qiáng)制轉(zhuǎn)換。子類比父類擁有更多的屬性和更強(qiáng)的功能,這個(gè)時(shí)候我們使用功能較弱的類型(父類)引用功能較強(qiáng)的對(duì)象(子類),這是可行的。但是將功能較弱的類型(父類)強(qiáng)制轉(zhuǎn)功能較強(qiáng)的對(duì)象(子類)時(shí),就不一定可以行了。
向上轉(zhuǎn)型,子類對(duì)象將引用賦予父類類型, java允許一個(gè)對(duì)象可以不被其對(duì)應(yīng)的類型所引用,而被其父類類型引用,從而可以使用其父類類型,父類引用無(wú)法調(diào)用子類對(duì)象中父類沒(méi)有的方法,向上轉(zhuǎn)型會(huì)有子類特性丟失。如:father.fat(),father中只能調(diào)用fat()方法,而無(wú)法調(diào)用so()方法。若需要使用其原對(duì)象特性,這時(shí)就需要向下轉(zhuǎn)型了,用一個(gè)它本身類型的變量來(lái)引用它。
向下轉(zhuǎn)型是可以成功的,如:(Son)father,①中的向下轉(zhuǎn)型失敗是因?yàn)閒ather本身的對(duì)象是Father,強(qiáng)制轉(zhuǎn)換會(huì)使作用域溢出(ClassCastException:當(dāng)前者的域小于后者的時(shí)候出現(xiàn)),而②中father本身就是Son對(duì)象,(Son)father只是讓其恢復(fù)本身特性,所以是可以成功的。但是說(shuō)到底父類對(duì)象還是無(wú)法轉(zhuǎn)換為子類所引用。父類引用可以指向子類對(duì)象,但是子類引用卻不能指向父類對(duì)象。
當(dāng)我們用一個(gè)類型的構(gòu)造器構(gòu)造出一個(gè)對(duì)象時(shí),這個(gè)對(duì)象的類型就已經(jīng)確定的,也就說(shuō)它的本質(zhì)是不會(huì)再發(fā)生變化了。如:father被賦予的是Son類的對(duì)象,所以father調(diào)用的fat()方法是Son對(duì)象中的fat()方法,Son對(duì)象即使被賦予給了father類型,但其本身還是Son對(duì)象,調(diào)用的方法還是原對(duì)象中的方法。
public class Father { public void fat(){ System.out.println("I`m father"); } } public class Son extends Father { public void fat(){ System.out.println("I`m a father of my son"); } public void so() { System.out.println("I`m son"); } } public class TypeStrong { public static void main(String[] args) { Son son = new Son(); Father father = son;//向上轉(zhuǎn)型,父類引用指向了子類對(duì)象,此時(shí)子類對(duì)象的類型為父類引用的類型 father.fat();//只能調(diào)用fat()方法,無(wú)法調(diào)用so()方法,且fat()輸出為:I`m a father of my son father = (Son) father;//依然無(wú)法調(diào)用so()方法,因?yàn)閒ather為Father類型 ((Son) father) .so();//終于可以調(diào)用了... // Father father2 = new Father(); // Son son2 = (Son) father2;//①運(yùn)行出錯(cuò),ClassCastException,父類對(duì)象不能為子類的類型引用 Son son2 = (Son) father;//②運(yùn)行成功,向下轉(zhuǎn)型,將原本父類引用賦予到子類引用上,當(dāng)然此時(shí)還是子類對(duì)象為子類的類型引用 } }2、基本數(shù)據(jù)類型轉(zhuǎn)換:
將一種類型的數(shù)據(jù)賦給另外一種類型變量時(shí),滿足下列兩種要求將執(zhí)行自動(dòng)類型轉(zhuǎn)換:1.兩種類型是兼容的 ;2.目的類型的范圍比來(lái)源類型大 。
數(shù)值類基本數(shù)據(jù)類型按照范圍大小可分為:byte,short,char,int,long,float,double
數(shù)值類數(shù)據(jù)類型和字符類數(shù)據(jù)類型、布爾類數(shù)據(jù)類型不兼容,字符類數(shù)據(jù)類型和布爾類數(shù)據(jù)類型互相也不兼容。
注意:
byte、short、char類型進(jìn)行 + 操作,最后得出的結(jié)果為int數(shù)據(jù)類型
字符類數(shù)據(jù)類型與數(shù)值類數(shù)據(jù)類型進(jìn)行 + 操作,最后得出的結(jié)果為字符類數(shù)據(jù)類型
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71087.html
摘要:對(duì)象數(shù)組都是引用數(shù)據(jù)類型。低高數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則不能對(duì)類型進(jìn)行類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的。聲明變量的基本格式如下格式說(shuō)明為數(shù)據(jù)類型。但為了對(duì)類的使用者可見(jiàn),大多數(shù)靜態(tài)變量聲明為類型。 變量就是申請(qǐng)內(nèi)存來(lái)存儲(chǔ)值。也就是說(shuō),當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請(qǐng)空間。 內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲(chǔ)空間,分配的空間只能用來(lái)儲(chǔ)存該類型數(shù)據(jù)。 因此,...
摘要:剛開(kāi)始學(xué)習(xí)的時(shí)候,可能是一頭霧水,不知道從何學(xué)起。這個(gè)教程總體來(lái)說(shuō)就像列文虎克教學(xué),細(xì)到極致,妙到毫巔。適合絕對(duì)零基礎(chǔ)的,每個(gè)知識(shí)點(diǎn)掰開(kāi)了揉碎了講解。 剛開(kāi)始學(xué)習(xí)java的時(shí)候,可能是一頭霧水,不知道從何學(xué)起。還有很多Java小白,在剛自學(xué)Java的時(shí)候玩命的學(xué)習(xí),玩命的記住Java原理,天天早上五點(diǎn)起床背Java的一些英...
摘要:局部變量聲明在函數(shù)內(nèi)部的變量。在作用域范圍內(nèi)不能出現(xiàn)命名沖突。 java編程規(guī)范: 1.良好的標(biāo)識(shí)符的命名 保留字不能作為標(biāo)識(shí)符命名: class、public、static..., goto,const 區(qū)分大小寫:helloWorld、HelloWorld 2.良好的注釋習(xí)慣 3.良好的縮進(jìn):沒(méi)遇到一個(gè)代碼塊縮進(jìn)一次(一個(gè)tab鍵) 變量:代...
摘要:自動(dòng)拆箱用賦值運(yùn)算符把一個(gè)包裝類賦值給一個(gè)基本類型變量,或者是在包裝類進(jìn)行數(shù)值運(yùn)算時(shí)。指數(shù)計(jì)數(shù),表示的冪按位操作符可以把值看成單比特值對(duì)待,的操作相同,但是不能用于布爾值。移位操作符高位包括符號(hào)位舍棄,低位補(bǔ)零。 點(diǎn)擊進(jìn)入我的博客 3.1更簡(jiǎn)單的打印語(yǔ)句 System.out.println(imbug); 通過(guò)編寫一個(gè)小類庫(kù),并通過(guò)import static該方法來(lái)實(shí)現(xiàn)簡(jiǎn)化打?。ɑ?..
摘要:位置的使用運(yùn)算符后置時(shí),先使用變量原有值參與運(yùn)算操作,運(yùn)算操作完成后,變量的值自增或者自減,運(yùn)算符前置時(shí),先將變量的值自增或者自減,然后使用更新后的新值參與運(yùn)算操作。 1.JRE:是Java語(yǔ)言的運(yùn)行環(huán)境,它包含了Java虛擬機(jī),也就是JVM,同時(shí)還包含了Java語(yǔ)言運(yùn)行需要的核心類庫(kù)。對(duì)于這個(gè)類庫(kù),大家先理解為資料庫(kù)就行,后面學(xué)完面向?qū)ο?,你就明白了。JDK:是Java語(yǔ)言的開(kāi)發(fā)工具...
閱讀 2207·2021-11-24 10:34
閱讀 3171·2021-11-22 11:58
閱讀 3779·2021-09-28 09:35
閱讀 1794·2019-08-30 15:53
閱讀 2909·2019-08-30 14:11
閱讀 1624·2019-08-29 17:31
閱讀 619·2019-08-26 13:53
閱讀 2212·2019-08-26 13:45