Java instanceof和类型转换

Java instanceof和类型转换

  • instanceof用于判断对象与对象之间是否有关系,具体看代码

类型转换:

  1. 父类引用指向子类的对象

  2. 把子类转换为父类,向上转型,自动转换(但是可能丢失自己本来的一些方法)

  3. 把父类转换为子类,向下转型,需要强制转换

示例:

package com.oop.demo06;
//父类
public class Person {
        public void run(){
            System.out.println("run");
        }
}
package com.oop.demo06;
//子类1号
public class Students extends Person{
        public void go(){
            System.out.println("go");
        }
}
package com.oop.demo06;
//子类2号
public class Teacher extends Person{
}
package com.oop;

import com.oop.demo06.Person;
import com.oop.demo06.Students;
import com.oop.demo06.Teacher;

//一个项目应该只存在一个main方法
//测试类
public class Application {

    public static void main(String[] args) {

        //父类引用指向了子类对象
        Person students = new Students();
        //Object>Person>Studens
        //Object>Person>Teacher
        //Object>String
        System.out.println(students instanceof Students);//true
        System.out.println(students instanceof Person);//true
        System.out.println(students instanceof Object);//true
        System.out.println(students instanceof Teacher);//false
        //System.out.println(person instanceof String);//编译时就报错了,因为person和String没有任何关系

        //子类转换为父类,可能丢失自己本来的一些方法
        Students students1 = new Students();
        students1.go();
        Person person = students1;
        //person.go();代码报错

        students.run();
        //将students这个对象转换为Students类型,就可以使用Students类型的方法了
        ((Students)students).go();//强制转换

        /*
        输出的结果为:true
        true
        true
        false
        go
        run
        go
         */
    }

}
posted @ 2021-10-17 22:32  Liquor无言  阅读(75)  评论(0)    收藏  举报