多态以及父子类方法的调用
package com.qin.niuke; public class TestOverRide { public static void main(String[] args) { Birds birds = new YingWu(); // 多态,向上转型,父类型引用指向子类型对象,实际访问的是子类型的方法 birds.move(); // 执行结果说明,子类【Birds类】可以访问父类【Animals类】的方法【能继承的方法,move()方法】,也可以访问其子类的方法【YingWu类】 // 前提是存在继承关系,而且此处Birds类既充当了Animals的子类,也充当了YingWu的父类 // 那如何访问子类特有的方法呢?也即如何访问Birds类的子类YingWu类的方法moveFly()?? System.out.println("========================="); YingWu yingWu = (YingWu) birds; // 多态,向下转型,强制类型转换。 yingWu.moveFly(); } } class Animals{ public void move(){ System.out.println("动物在移动!!"); } } class Birds extends Animals{ @Override public void move() { super.move(); // 这个说明子类能访问父类的方法 System.out.println("鸟儿在飞!!"); } } class YingWu extends Birds{ @Override public void move() { super.move(); System.out.println("鹦鹉在跳舞!!"); } public void moveFly() { // 这是子类特有的方法 System.out.println("鹦鹉说话了!!"); } }
总结:
/**
*
* @author 莫欺少年穷
* 总结:
* 子类访问父类方法,只要继承来的方法就能通过super.方法访问回去!
* 父类访问子类方法(重写的方法),父类型引用指向子类型对象,向上转型,自动类型转换,实际上访问的就是子类重写父类后的方法!
* 父类访问子类特有的方法,如上,向下转型,强制类型转换。
*/
在java中父类调用子类中的方法
main方法中是可以的,父类是不能调用子类 的方法的。从面向对象上来说吧。
父类先于子类存在,子类从父类中生出来,所以子类知道父类,可以调用父类方法。但父类不知道子类,子类可以任意的出生,只要你愿意,所以父类无法调用子类,他不知他会有这样的子类,也不知有多少个子类,但子类的父类是唯一的。
简单点就是在JAVA中父类是不能直接调用子类的方法的。
实际上调用的是你new的是哪个,就是那个,也就是子类的方法
例如
class B extends A
A a = new B();
b.method()--->实际内存里面运行的是B的对象,所以调用的是子类B的方法
以上的代码案例说明通过多态可以实现父类访问子类方法的功能!!多态的知识
在父类中调用子类的方法可以用接口实现,因为接口是实现了多继承的,一个类中可以实现多个接口而只能继承一个父类。所以可以让父类和子类共同实现一个接口
而子类和父类都可实现这个接口中方法。在子类中的方法自然可以被父类调用到。