代码改变世界

Day29instanceof和类型转换

2022-08-31 22:09  rebirthhhh  阅读(15)  评论(0编辑  收藏  举报

instanceof

类型转换

package oop;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import oop.demo.Per;
import oop.demo.Stu;
import oop.demo.Tea;

public class Application {

    public static void main(String[] args) {

        //Objcet > Person >Student
        //Objcet > Person >Teacher

        java.lang.Object object = new Stu();

        System.out.println(object instanceof Stu);//true
        System.out.println(object instanceof Per);//true
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Tea);//false
        System.out.println(object instanceof String);//false

        System.out.println("=============================");

        Per per = new Stu();

        System.out.println(per instanceof Stu);//true
        System.out.println(per instanceof Per);//true
        System.out.println(per instanceof Object);//true
        System.out.println(per instanceof Tea);//false
        //System.out.println(per instanceof String);//编译错误

        System.out.println("=====================================");

        Stu stu = new Stu();

        System.out.println(stu instanceof Stu);//true
        System.out.println(stu instanceof Per);//true
        System.out.println(stu instanceof Object);//true
        //System.out.println(stu instanceof Tea);//无关系
        //System.out.println(stu instanceof String);//编译错误


        //System.out.println(x instanceof y); 能不能编译通过取决于x和y是否有父子关系


    }

}
package oop.demo;

public class Stu extends Per{
    public void go(){
        System.out.println("go");

    }

}

package oop;


import oop.demo.Per;
import oop.demo.Stu;

public class Application {

    public static void main(String[] args) {
        //类型之间的转换:基本类型转换  :父  子

        //高          低
        Per obj = new Stu();
        //Stu.go();  不行

        //student将这个对象转换为Student类型,就可以使用Student类型的方法了!
        //(Stu)obj; alt+回车
        Stu stu = (Stu) obj;//per类型转换为stu
        stu.go();
        //这两句就相当于下面这句!
        ((Stu)obj).go();

        //子类转换为父类可能丢失自己的本来的一些方法


    }
}

1.父类引用指向子类的对象 (前提)

2.把子类转换为父类,向上转型,可以直接转换 Person person = student

3.父类转换为子类,向下转型,强制转换(可能丢失方法)((Stu)obj).go();

4.方便方法的调用,减少重复的代码!简洁

Java的特性: 封装,继承,多态

抽象的编程思想。