java instanceof與型別轉換
阿新 • • 發佈:2021-08-05
instanceof與型別轉換(基礎篇)
instanceof可以用來判斷一個物件是什麼型別,判斷兩個類之間是否存在父子關係。
都在程式碼裡啦
//測試類 package oop; import oop.demo02.Person; import oop.demo02.Student; import oop.demo02.Teacher; public class Application { public static void main(String[] args) { //在這四個類之間的關係 //Object>String //Object>Person>Teacher //Object>Person>Student //用instanceof輸出判斷各類之間的關係 //System.out.println("x instanceof y");能不能編譯通過主要看x與y是不是存在父子關係。 //結果為true還是false看x所指向的實際型別是不是y的子型別。 Object object = new Student(); System.out.println(object instanceof Student);//true System.out.println(object instanceof Person);//true System.out.println(object instanceof Teacher);//False System.out.println(object instanceof Object);//true System.out.println(object instanceof String);//false System.out.println("*******************************"); Person person =new Student(); System.out.println(person instanceof Student);//true System.out.println(person instanceof Person);//true System.out.println(person instanceof Teacher);//False System.out.println(person instanceof Object);//true //System.out.println(person instanceof String);//false編譯時就會報錯 System.out.println("******************************"); Student student =new Student(); System.out.println(student instanceof Student);//true System.out.println(student instanceof Person);//true // System.out.println(student instanceof Teacher);//False//編譯報錯 System.out.println(student instanceof Object);//true // System.out.println(student instanceof String);//編譯報錯 } } //父類與子類,都繼承父類 package oop.demo02; public class Student extends Person { } package oop.demo02; public class Person { public void run(){ System.out.println("run"); //在這裡是無法重寫子類的方法的。 } } package oop.demo02; public class Teacher extends Person { }
型別轉換
當父類轉向子類需要強制轉換,向下轉型
子類轉向父類自動轉換。,向上轉型
父類的引用指向子類的物件。
程式碼示例:
//首先我們寫一個父類 package oop.demo02; public class Person { public void run(){ System.out.println("run"); //在這裡是無法重寫子類的方法的。 } } //再寫一個子類 package oop.demo02; public class Student extends Person { public void go() { System.out.println("go"); } }//子類裡面有自己的go方法和繼承了父類的run方法 //寫一個測試類呼叫 package oop; import oop.demo02.Person; import oop.demo02.Student; //型別之間的轉換 public class Application { public static void main(String[] args) { //父轉子,要強轉,子轉父,不需要。 // Person oba = new Student(); //把student物件型別轉換為Student,就可以使用Student型別的方法了 //Student student = (Student) oba;//進行強制轉換。 // student.go(); Student student = new Student(); student.go(); Person person = student;//低轉高 } }