java中的多态怎么理解 JAVA中A a = new B()什么意思?

JAVA中A a = new B()什么意思?A A=new b()实例化一个子类对象A。这是一个典型的多态性,相当于:animal A=new dog();//这是一个向上的转换A.phonenat

JAVA中A a = new B()什么意思?

A A=new b()实例化一个子类对象A。这是一个典型的多态性,相当于:animal A=new dog();//这是一个向上的转换A.phonenation()//对象A可以在animals中使用phonenation()或其他方法,但不能调用dog方法。A=new A()实例化父类的对象,动物A=new dog();dog B=(dog)A;//这里是向下的转换。此时,B可以调用尚未重写的animal类的方法,dog类的所有方法(包括重写animal类的方法)和向上的转换都将成功。它是安全的。就像说狗是动物一样。没问题。但是通过B,如果调用animal或dog类中的任何方法,它都会报告异常,也就是说向下转换可能会出错。不能说动物是狗