面向对象——instanceof和类型转换
instanceof的作用是判断两个实例之间有没有父子关系。
类型转换特点:
- 父类引用指向子类的对象;
- 把子类转换为父类,向上转型;
- 把父类转换为子类,向下转型;强制转换
- 方便方法的调用,减少重复的代码!
核心思想——抽象:封装、继承、多态!
package(包)com.du.OOP.demo02:类Application(mian()方法)
package com.du.OOP.demo02;
import com.du.OOP.demo06.Person;
import com.du.OOP.demo06.Student;
import com.du.OOP.demo06.Teacher;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//instanceof使用
//Object > String
//Object > Teacher
//Object > Person > Student
Object object = new Student();
//System.out.println(A instanceof B);能不能编译通过,取决于A和B有没有父子关系!
System.out.println(object instanceof Student);//ture
System.out.println(object instanceof Person);//ture
System.out.println(object instanceof Object);//ture
System.out.println(object instanceof Teacher);//false
System.out.println(object instanceof String);//false
Person person = new Student();
System.out.println(person instanceof Student);//ture
System.out.println(person instanceof Person);//ture
System.out.println(person instanceof Object);//ture
System.out.println(person instanceof Teacher);//false
//System.out.println(person instanceof String);//编译报错
Student student = new Student();
System.out.println(student instanceof Student);//ture
System.out.println(student instanceof Person);//ture
System.out.println(student instanceof Object);//ture
//System.out.println(student instanceof Teacher);//编译报错
//System.out.println(person instanceof String);//编译报错
//类型之间的转化:
//父类转子类
Person s1 = new Student();
//将s1对象转换成Student类型,就可以使用Student类型的方法了
Student s2 = (Student) s1;
s2.go();
//或者直接写成
((Student) s1).go();
//子类转父类(可能会丢失方法)
Student ss1 = new Student();
ss1.go();
Person pp1 = ss1;
//pp1.go();//报错,无法使用go()方法
}
}
package(包)com.du.OOP.demo06:类Person(instanceof和类型转换)
package com.du.OOP.demo06;
public class Person {
public void run(){
System.out.println("run!");
}
}
package(包)com.du.OOP.demo06:类Student(instanceof和类型转换)
package com.du.OOP.demo06;
public class Student extends Person{
public void go(){
System.out.println("go!");
}
}
package(包)com.du.OOP.demo06:类Teacher(instanceof和类型转换)
package com.du.OOP.demo06;
public class Teacher extends Person{
}