instanceof和类型转换

instanceof和类型转换

instanceof,判断一个对象是什么类型,是否存在父子关系

代码实现:

public class Application {
    public static void main(String[] args) {

        //Object > String
        //Object > Person > Teacher
        //Object > Person > Student
        Object object = new Student();

        //System.out.println(X instanceof Y);//能不能编译通过!看是否为父子关系

        System.out.println(object instanceof Student); //true
        System.out.println(object instanceof Person); //true
        System.out.println(object instanceof Object); //true
        System.out.println(object instanceof Teacher);  //false
        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 Object); //true
        System.out.println(person instanceof Teacher);  //false
        //System.out.println(person instanceof String); // 编译报错!
        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 Object); //true
        //System.out.println(student instanceof Teacher);  //编译报错
        //System.out.println(student instanceof String); // 编译报错
    }

}

类型转换

抽象:编程思想!持续地学习!自会茅塞顿开!多实践,多测试大脑中的想法!实践出真知~

/*
1.父类引用指向子类的对象
2.把子类转换为父类,向上转型;引用时无法使用子类的独特方法
3.把父类转换为子类,向下转型:强制转换。会开辟新的空间
4.方便方法的调用,减少重复的代码!简洁
j
封装、继承、多态!抽象类、接口

抽象:编程思想!持续的学习,茅塞顿开!多实践,多测试大脑中的想法!实践出真知~
 */

代码:

public class Application {
    public static void main(String[] args) {
        //类型之间的转化:  基本类型转换  高低64 32 16 8
        //父     子

        //高             低
        Person obj = new Student();

        //student将这个对象转换为Student类型,我们就可以使用Student类型的方法了!

        Student student = (Student) obj;
        student.go();//本质上还是Person
        //又或者
        ((Student)obj).go();

        //高转低 自动转
        //子类转换为父类,可能丢失自己的本来的一些方法!
        Student student1 = new Student();
        student1.go();
        Person person = student1;

    }
posted @ 2020-07-13 16:48  小卢传  阅读(122)  评论(0编辑  收藏  举报