面向对象进行类型转换一共就两种:向上转型和向下转型
向上转型
父类的引用指向子类的对象,这个过程可以直接转换不需要强制转换
比如:Person p1 = new Student();//子类向上转型
但是调用子类里面的方法的时候我们需要强制转换如下:
((Student)p1).run();//这样才能调用到子类里面的方法
向下转型
子类的引用指向父类的对象,这个过程需要强制转换
比如:Student s1 = (Student) new Person();//父类向下转型
调用父类里面的方法直接调用即可
父类
package com.oop.demo02;
public class Person {
public void say(){
System.out.println("我是父类");
}
}
子类
package com.oop.demo02;
public class Student extends Person{
public void run(){
System.out.println("你会跑吗?");
}
}
测试类
package com.oop.demo02;
public class Aplication {
public static void main(String[] args) {
//我们知道父类的引用可以指向子类对象,也就是说子类可以装进父类中,和之前的变量关系一样,比如说 int类型可以直接赋给double类型
//把父类对象转换为子类对象不需要强制类型转换
//向上转型
Person obj = new Student();
((Student)obj).run();
obj.say();
//向下转型,需要强制类型转换
Student student1 =(Student) new Person();
student1.say();
}
}