1. 程式人生 > 其它 >java繼承之五(instanceof(型別轉換)、引用型別)

java繼承之五(instanceof(型別轉換)、引用型別)

instanceof作用:判斷兩個類之間是否存在父子類關係。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Object obj=new Stror();
           Proae pr=new Stror();
        //使用instanceof判斷的前提是,兩邊的型別有關係的前提下才可以,如果兩邊完全沒有父子類關係的話編譯是不會通過的
            System.out.println(obj instanceof Stror);//
通過instanceof方法去判斷obj是否Srtor型別的 System.out.println(pr instanceof Stror); //注意使用instanceof對比想要編譯能通過,他們一定得要有父子類關係,如果沒有關係那編譯就會報錯 } } //子類 class Stror extends Proae{ } //父類 class Proae{ }

型別轉換:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        
//型別之間的轉化:基本型別轉換注意高低就行,如果從高轉到低就需要進行強轉了 //型別之間的轉: 父>子 //例子1:父 轉 子 //高 低 Proae st=new Stror(); //當前的物件是父類指向子類的引用,那我們現在想呼叫Stror類中的方法是調用不了的 // st.go();//無法呼叫子類中的方法 // ((Stror)st).go();如果不想像下面一樣先把物件拆分來轉換為stror型別,就想呼叫子類方法,可以像這樣直接寫成一句程式碼即可 //如果想要呼叫Stror中的方法,那我們可以讓Stror將Proae這個物件轉換為stror型別,我們就可以使用stror型別的方法了,如下
//目前st物件的型別是proae的型別,因為proae是stror的父類,所以想把st轉換成stror型別的話我們就得要強制轉換 Stror pr=(Stror)st;////pr.go(); //例子2:子 轉 父 Stror stu=new Stror(); stu.go();//可以直接呼叫子類方法 Proae pe=Stror;//直接可以轉換為子類的型別,不需要強制轉換 pe.go();//無法呼叫 ,因為子類轉換為父類,可能丟失自己的本來的一些方法 } } //子類 class Stror extends Proae{ public void go(){ System.out.println("go"); } } //父類 class Proae{ public void run(){ System.out.println("run"); } }

多型總結:

  1.父類引用指向子類的物件

  2.把子類轉換為父類:向上轉型,不用強制轉換

  3.把父類轉換為子類:向下轉換:需要強制轉換,可能會丟失一下方法(基本型別強制轉換會丟失精度)

  4.為了方便方法呼叫:不用重新建立一個類,直接把方法升級或降級一下,就可以直接呼叫對應類的方法了,這樣可以減少我們的程式碼,讓程式碼變得理簡潔。