Java最核心的三大特性:封装,继承,多态。
继承和多态都与Java的向上转型与向下转型有着密切的关系。继承的表现形式是子类继承父类对象的方法,属性。多态描述的是同一种事物的不同表现形式。多态体现在父类实现子类对象,这也正是向上转型的实现形式。
多态中的变量与方法
多态成员方法:编译看左边,运行看右边。
堕胎成员变量:编译运行都看左边
下面是向上转型和向下转型的介绍:
向上转型:向上转型可以理解成父类实现子类对象或者接口实现实现类对象。
向下转型:向下转型是强制转化,将父类对象强制转换成子类。
import org.junit.Test;
class MaMa
{
public void eat()
{
System.out.println("mama eat");
}
}
class girl extends MaMa
{
public void eat()
{
System.out.println("girl eat");
}
public void run()
{
System.out.println("girl run");
}
}
public class test {
@Test
public void testOR()
{
MaMa b = new girl(); //向上转型
b.eat(); //调的是子类的eat
girl www = (girl)b; //向下
www.eat();
www.run();
//尝试直接new父类向下转成子类
MaMa ma =new MaMa ();
girl gi= (girl)ma ; //运行时崩溃
}
}
- 向下转型之前必须向上转型
- 向上转型之后只能使用父类包含的重写后的方法,无法调用子类独有的方法
- 向上转型可以直接转,向下转型只能强转
- 直接创建父类对象无法进行向下转型,会报ClassCastException强制转换异常
感谢您的阅读,如果本篇文章对您有帮助,欢迎点赞,关注,您的阅读是我莫大的鼓励!