一、instanceof 和 类型转换 介绍
1、在使用运算符 instanceof
可以判断对象的类型;
2、如果 instanceof
判断是此类型,那么可以做对象类型转换(Casting);
3、Java的对象类型可以分为两种情况:自动类型和强制类型
4、对象的类型转换只用在有继承关系的对象之间
-
Person pp = new Girl();
-
Girl gg = (Girl)pp;
二、编程实战
代码的详细解读,可以参考视频教程
Person.java
/**
* User: 祁大聪
*/
public class Person {
public void getName(){
System.out.println("Person name");
}
}
子类:Boy.java
/**
* 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
/**
* 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
/**
* 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());
}
}