public class Person { public void run(){ System.out.println("run"); } }
public class Student extends Person{ }
public class Teacher extends Person{ }
public class Application { public static void main(String[] args) { // instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。 // Object > String // Object > Person > Teacher // Object > Person > Student Object object = new Student(); 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); // 编译报错 } }
public class Person { public void run(){ System.out.println("run"); } }
public class Student extends Person{ public void go(){ System.out.println("go"); } }
public class Teacher extends Person{ }
public class Application { public static void main(String[] args) { // 类型之间的转换 父 > 子 // Person 高 Student 低 Person obj = new Student(); // obj.go(); //报错 // student将这个对象转换为Student类型,我们就可以使用Student类型的方法了 // Student student = (Student)obj; // student.go(); // 简写 ((Student) obj).go(); // 子类转换为父类,可能丢失自己的本来的一些方法 // 低转高,直接转换 Student student1 = new Student(); student1.go(); Person person = student1; } }
多态 1. 父类的引用指向子类的对象(子类的引用不能指向父类的对象) 2. 把子类转换为父类,向上转型 3. 把父类转换为子类,向下转换;强制转换 4. 方便方法的调用,减少重复的代码,简洁
https://www.bilibili.com/video/BV12J41137hu?p=72