instanceof和类型转换

public class People {
	public void run(){
        System.out.println("run");
    }
}

public class Student extends People{
	public void go(){
        System.out.println("go");
	}
}

public class Teacher extends People{
}

 

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

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

        System.out.println(object instanceof Student);//true
        System.out.println(object instanceof People);//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("====================================");

        People people = new Student();
        System.out.println(people instanceof Student);//true
        System.out.println(people instanceof People);//true
        System.out.println(people instanceof Object);//true
        System.out.println(people instanceof Teacher);//false
       // System.out.println(people instanceof String);//编译报错!

        System.out.println("=====================================");
        Student student = new Student();
        System.out.println(student instanceof Student);//true
        System.out.println(student instanceof People);//true
        System.out.println(student instanceof Object);//true
        //System.out.println(student instanceof Teacher);//编译报错!
        //System.out.println(student instanceof String);//编译报错!

    }
}

  

类型转换

public class Application {
    public static void main(String[] args) {
​
        //类型之间的转化:  父      子
        //高          低
        People obj = new Student();
        
        //如果obj将People类型转化为Student类型,我们就可以使用Student类型的方法了!
        ((Student)obj).go();
        
        //子类转换为父类,可能丢失自己的本来的一些方法!
        //低        高
        Student student = new Student();
        student.go();
        People people = student;
        //people.go();
        
   }
}

总结:

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

​   2.把子类转换为父类,向上转型;

​   3.把父类转换为子类,向下转型;强行转换

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

posted @ 2022-06-25 21:02  理暗  阅读(20)  评论(0)    收藏  举报