向下轉型的注意事項與instanceof的使用

java小馬達發表於2020-12-09

向下轉型的注意事項:
在物件向下轉型中,父類例項是不可能強制轉換成任意子類例項,必須先通過子類例項化,利用向上轉型讓父類物件與具體子類例項發生聯絡後才可以向下轉型,否則將出現ClassCastException異常。

instanceof 的使用:
instanceof 的左邊是物件,右邊是類;當物件是右邊類或子類所建立物件時,返回true;否則,返回false。
用instanceof時需注意向下轉型的注意事項,否則即使時父子類關係仍會返回false
如下所測:

class Person{
    public void show(){
        System.out.println("1111111111");
    }
}

class Student extends Person {
    @Override
    public void show() {
        System.out.println("2222");
    }
}

class Test{
    public static void main(String[] args) {
        Person per = new Person();
        Student st = new Student();
        Per p=new St();

        St s=(St)p;
        s.show();

        System.out.println( st instanceof Per);//true
        System.out.println( s instanceof Per);//true
        System.out.println( p instanceof St);//true

		//如下per物件是Student類的父類所創,但仍然返回false
        System.out.println( per instanceof St);//false

    }
}

相關文章