型別轉換
1)基本型別轉換
a)自動型別轉換--》小型別賦值大型別
b)手動(強制)型別轉換--》大型別賦值給小型別
2)引用型別轉換
a)自動型別轉換--》子型別賦值給超型別
b)手動(強制)型別轉換--》超型別賦值給子型別
* 子型別:繼承鏈下面的型別
* 超型別:繼承鏈上面的型別
* 例如:
* 繼承鏈:中國人-》人-》動物-》生物-》object
* 子型別:假設-》人
* 對應人的超型別:動物-》生物-》object
* a型別 引用變數=b型別的值;
* 引用型別轉換的原則
* a)編譯看引用型別:編譯時候,如果a型別是b引用型別的超型別--》可以自動型別轉換--》否則編譯錯誤
* b)執行看物件型別:執行時候,如果a型別是b引用指向物件型別超型別--》可以型別轉換--》否則執行錯誤
* 強轉語法
* a型別 引用變數=(a型別)b型別的值;
* 怎麼檢查-我們的強制型別轉換-》是否可以成功進行
* instanceof運算子
* 語法:
* 引用 instanceof 目標型別
* 結果值型別:布林值
* true:引用指向的物件的型別可以轉換為目標型別
* false:引用指向的物件的型別不可以轉換為目標型別
1、super關鍵字作用?
方便在子類中呼叫【當前物件】的【繼承鏈】上的資源(屬性和方法)
2.this和super的對比
1)都是指向當前物件
2)呼叫資源(成員變數,成員變數)不一樣
this:【當前類】【當前類的父類】【繼承鏈上其他類】
super:【當前類的父類】【繼承鏈上其他類】
3)位置:成員方法,構造器---》靜態的結構不能直接使用
3.super的作用:
1)當成員方法重寫的時候
super.成員方法-》呼叫超型別被重寫的方法
2)當前成員變數同名的時候(不會遇到)
super.成員變數-》呼叫超型別同名的變數
3)呼叫父類指定的構造器-進行資料初始化
建立物件的時候-->做的事情
1)在堆裡建立出乙個物件
2)通過物件呼叫構造器進行資料初始化
3)返回物件位址
--》在有繼承的時候--》建立物件的時候--》呼叫構造器
1)從繼承鏈上到下呼叫每個類的構造器
--》呼叫父類構造器的原因--》進行對應的父類的資料初始化
--》預設空構造器-》沒有資料初始化
2)呼叫父類指定的構造器-進行資料初始化
語法:super(直接父類構造器引數列表);--》在子類構造器呼叫父類指定的匹配引數的構造器
1)必須在構造器中
2)必須在第一句
3)構造器裡如果沒有顯示的super(引數列表)**,那麼預設加上super();編寫了不會加入super();
C 之型別轉換
一 static cast型別轉換 static cast 應用於c 可以隱式轉換的型別之間,包括雙向隱式轉換和單向隱式轉換。例如 雙向隱式轉換 int a char b a static cast b 可以直接通過隱式轉換,轉換型別 a b b static cast a 可以直接通過隱式轉換,轉...
Effective C 之型別轉換
阿里面試過去好久了,可惜筆試做的太爛了,gg,不過還是要繼續完善自己的知識體系的。這個型別轉換的問題,被面試官問到了,然後一臉尼克楊的蒙蔽表情。其實早就找到了,這個問題,一直因為忙別的,沒有好好總結一下。effective c 條款27 儘量減少轉型動作 c 的設計目標之一是,保證 型別錯誤 絕不可...
More Effective C 之型別轉換
1.條款之優先考慮c 風格的型別轉換 c 通過引用4種新的型別轉換克服了c風格的型別轉換的缺點。這四種操作符是 static cast,const cast,dynamic cast以及reinterpret cast。大多數情況下,關於這些操作符應該知道的是,我們所習慣的寫法為 type expr...