多态中向上转型与向下转型
多态的转型分为向上转型与向下转型两种:
-
A:向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。
使用格式:
父类类型 变量名 = new 子类类型();
如:Person p = new Student();
-
B:向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的
使用格式:
子类类型 变量名 = (子类类型) 父类类型的变量;
如:Student stu = (Student) p; //变量p 实际上指向Student对象
package com.itheima_01;
/*
* 多态中的向上转型和向下转型:
*
* 引用类型之间的转换
* 向上转型(自动)
* 由小到大(子类型转换成父类型)
* 向下转型(强制)
* 由大到小(父类型转换成子类型)
* 基本数据类型的转换
* 自动类型转换
* 由小到大
* byte short char --- int --- long --- float --- double
* 强制类型转换(有可能出现损失精度)
* 由大到小
*
*/
public class PoymorphicDemo3 {
public static void main(String[] args) {
Animal2 a = new Dog();//向上转型
// a.eat();
Dog d = (Dog)a;//向下转型
d.swim();
}
}
class Animal2 {
public void eat() {
System.out.println("吃东西");
}
}
class Dog extends Animal2 {
public void eat() {
System.out.println("啃骨头");
}
public void swim() {
System.out.println("狗刨");
}
}
网友评论