1. 程式人生 > 其它 >Java基礎筆記30——向上轉型和向下轉型

Java基礎筆記30——向上轉型和向下轉型

1.上溯造型:子類 -> 父類,自動轉換
前提:基於繼承關係
注意:轉換過程,會失去子類原來的屬性與方法,僅能使用父類的屬性與方法

2.下溯造型:父類 -> 子類,強制轉換
前提:基於繼承關係
注意:曾經向上轉換過的物件,才能在向下轉換,物件不允許不經過上溯造型而直接下溯造型

3.instanceof運算子:用於檢測物件是否是一個特定型別
規則
物件 instanceof 類/介面型別

package com.lqh.chapter03;

public class _28upanddown {
    public static void main(String[] args) {
        
// 上溯造型:子類轉父類 // 子類 SuperMan ironMan = new SuperMan(); ironMan.fly(); // 父類 Man man = ironMan; man.walk(); // man.fly();//此時ironMan的fly方法損失了,無法使用 // 下溯造型:父類轉子類 SuperMan ironMan2 = (SuperMan) man; ironMan2.fly(); /*
物件不允許不經過上訴造型而直接下溯造型 * java.lang.ClassCastException: Man cannot be cast to SuperMan */ //父類 Man lqh = new Man(); lqh.say(); //子類 /* * SuperMan spider = (SuperMan) lqh; spider.fly(); */ /* * 子類與子類之間不允許轉換
*/ //子類 NormalMan normalman = new NormalMan(); //子類 //SuperMan antMan = (SuperMan) normalman; System.out.println(ironMan instanceof Man);//true System.out.println(ironMan instanceof SuperMan);//true //System.out.println(ironMan instanceof NormalMan);//false } }

輸出結果為:

超人:飛
人:走路
超人:飛
人:說話
true
true