java instanceof与类型转换

java  instanceof与类型转换

instanceof与类型转换(基础篇)

instanceof可以用来判断一个对象是什么类型,判断两个类之间是否存在父子关系。

都在代码里啦

//测试类
package oop;
import oop.demo02.Person;
import oop.demo02.Student;
import oop.demo02.Teacher;
public class Application {
    public static void main(String[] args) {
        //在这四个类之间的关系
        //Object>String
        //Object>Person>Teacher
        //Object>Person>Student
        //用instanceof输出判断各类之间的关系
        //System.out.println("x instanceof y");能不能编译通过主要看x与y是不是存在父子关系。
        //结果为true还是false看x所指向的实际类型是不是y的子类型。
        Object object = new Student();
        System.out.println(object instanceof Student);//true
        System.out.println(object instanceof Person);//true
        System.out.println(object instanceof Teacher);//False
        System.out.println(object instanceof Object);//true
        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 Teacher);//False
        System.out.println(person instanceof Object);//true
        //System.out.println(person instanceof String);//false编译时就会报错
        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 Teacher);//False//编译报错
        System.out.println(student instanceof Object);//true
    //   System.out.println(student instanceof  String);//编译报错
    }
}
//父类与子类,都继承父类
package oop.demo02;
public class Student extends Person {
}
package oop.demo02;
public class Person {
    public void run(){
        System.out.println("run");
        //在这里是无法重写子类的方法的。
    }
}
package oop.demo02;
public class Teacher  extends Person {
}

类型转换

当父类转向子类需要强制转换,向下转型

子类转向父类自动转换。,向上转型

父类的引用指向子类的对象。

代码示例:

//首先我们写一个父类
package oop.demo02;

public class Person {
    public void run(){
        System.out.println("run");
        //在这里是无法重写子类的方法的。
    }
}
//再写一个子类
package oop.demo02;
public class Student extends Person {
    public void go() {
        System.out.println("go");
    }
}//子类里面有自己的go方法和继承了父类的run方法
//写一个测试类调用
package oop;

import oop.demo02.Person;
import oop.demo02.Student;
//类型之间的转换
public class Application {
    public static void main(String[] args) {
        //父转子,要强转,子转父,不需要。
     // Person oba =  new Student();
        //把student对象类型转换为Student,就可以使用Student类型的方法了
    //Student student = (Student) oba;//进行强制转换。
  //  student.go();
   Student student = new Student();
   student.go();
   Person person = student;//低转高
    }
}

狂神说java

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » java instanceof与类型转换