向下轉型的含義

2021-05-28 16:25:33 字數 745 閱讀 7792

package com.webex.async.steps.copy.test;

class parentdemo

class sundemo extends parentdemo

class x extends sundemo

class y extends parentdemo

public class copy_2_of_sun

從2個名詞開始說起:向上轉型(upcasting) 、向下轉型(downcasting).

舉個例子:有2個類,father是父類,son類繼承自father。

father f1 = new son();   // 這就叫 upcasting (向上轉型)

// 現在f1引用指向乙個son物件

son s1 = (son)f1;   // 這就叫 downcasting (向下轉型)

// 現在f1還是指向son物件

第2個例子:

father f2 = new father();

son s2 = (son)f2;       //出錯,子類引用不能指向父類物件

你或許會問,第1個例子中:son s1 = (son)f1;問什麼 是正確的呢。

很簡單因為f1指向乙個子類物件,father f1 = new son(); 子類s1引用當然可以指向子類物件了。

而f2 被傳給了乙個father物件,father f2 = new father();子類s1引用不能指向父類物件。

向下轉型與向下轉型

物件型別的轉換包括向上型別轉換與向下型別轉換。將子類物件賦值給父類型別的變數,這種技術稱為 向上轉型 在物件導向中越上層的類越抽象,越下層的類越具體,越具體的類具有越多的特性,由於向上轉型是將較具體的類轉到較抽象的類,所以它總是安全的。將父類物件賦值給子類型別的變數,這種技術稱為 向下轉型 由於是將...

向下轉型,向上轉型

package cn.dali.code24 向上轉型 父類引用指向子類物件 格式 父類名稱 物件名 new 子類名稱 向下轉型 當我們使用父類引用指向子類物件的時候,我們想把父類物件轉為子類物件時,需要向下轉型 向下轉型就是乙個還原動作。格式 子類名稱 物件名 子類名稱 父類物件 注意 乙個父類有...

向上轉型向下轉型

在引用資料型別中,只有有繼承關係的型別才能進行型別轉換 型別轉換只是轉換看待物件的引用的型別,物件本身沒有也不可能參與轉換 父類引用可以自動指向子類物件,但只能訪問和呼叫到來自於父類的屬性和行為 子類的引用不能指向父類或其它子類物件,就算強轉也會導致執行失敗並丟擲classcastexception...