多态的三大条件:(1)继承(2)重写(3)父类引用指向子类对象
多态的表现:多态就是同一种方法在不同子类中产生不同的结果,具体的操作和表现就是,存在父类A方法howGo() ,子类b重写howGo方法,子类c重写howGo()方法,满足了条件1和条件2即继承和重写(提示 因为是b和c是子类所以必须存在继承父类),剩下第三个条件了,这里必须要理解什么是父类引用指向子类。
b bobject = new b(); 这是创建一个子类b对象bobject
c cobject = new c(); 这是创建一个子类c对象bobject
重点来了
A Aobject = new b(); 这个是创建了一个指向子类的父类引用类型,称为向上转型,一般都是子类调用和继承父类的属性和方法而不能父类调用子类方法和属性,但是把一个父类指向子类后,就可以调用子类的方法和属性了。这里Aobject 的类型是父类A,new b()是创建一个子类b的对象, A Aobject = new b(); 就是Aobject引用指向子类b的对象
以上三个条件都满足了,那么多态就体现出来了,子类b生成的对象bobject调用重写后的howGo,那么体现的是b重写该方法后的返回的结果或者值,子类c生成的对象cobject调用c重写该方法后的howGo(),那么体现的是c重写该方法后的返回的结果或者值。这就是多态的表现,同一种方法在不同子类调用的情况下,呈现出不同的结果。就如f5键一样,在网页中按f5是刷新,如果是在PS软件中,f5可能就是放大图片。