1. 程式人生 > 其它 >java instanceof與型別轉換

java instanceof與型別轉換

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;//低轉高
    }
}

狂神說java