• 目录

instanceof和类型转换

阅读量: 397 编辑

instanceof 和 类型转换

一、instanceof 和 类型转换 介绍

  • 在使用运算符 instanceof 可以判断对象的类型

  • 如果 instanceof 判断是此类型,那么可以做对象类型转换(Casting)

    • Java的对象类型可以分为两种情况:自动类型和强制类型

    • 对象的类型转换只用在有继承关系的对象之间

      • Person pp = new Girl();

      • Girl gg = (Girl)pp;

二、代码实战

代码的详细解读,可以参考视频教程

Person.java

package com.qicong.gj.c15;

/**
 * User: 祁大聪
 */
public class Person {

    public void getName(){
        System.out.println("Person name");
    }
}

子类:Boy.java

package com.qicong.gj.c15;

/**
 * User: 祁大聪
 */
public class Boy extends Person{

	@Override
    public void getName(){
        System.out.println("Boy name");
    }

    public void dance(){
        System.out.println("Boy dance");
    }
}

子类:Girl.java

package com.qicong.gj.c15;

/**
 * User: 祁大聪
 */
public class Girl extends Person{
	@Override
    public void getName(){
        System.out.println("Girl name");
    }

    public void sing(){
        System.out.println("Girl sing");
    }
}

测试类:Test.java

package com.qicong.gj.c15;

/**
 * User: 祁大聪
 */
public class Test {

    public void printPerson(Person p){
        System.out.println(p instanceof Girl);
        System.out.println(p instanceof Boy);

        if(p instanceof Girl){//判断类型
            Girl girl = (Girl)p;//强制转换为Girl
            girl.sing();//然后就可以调用Girl的函数了
        }

        if(p instanceof Boy){
            Boy boy = (Boy)p;
            boy.dance();
        }

    }

    public static void main(String[] args) {
        Person p = new Girl();

        Test t = new Test();
        t.printPerson(p);
        t.printPerson(new Boy());
    }
    
}

  • 目录