Fork me on GitHub

多态以及父子类方法的调用

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的方法

以上的代码案例说明通过多态可以实现父类访问子类方法的功能!!多态的知识

 

 

在父类中调用子类的方法可以用接口实现,因为接口是实现了多继承的,一个类中可以实现多个接口而只能继承一个父类。所以可以让父类和子类共同实现一个接口
而子类和父类都可实现这个接口中方法。在子类中的方法自然可以被父类调用到。

 

posted @ 2022-05-27 17:14  余ོ笙ꦿ℘゜এ  阅读(446)  评论(0编辑  收藏  举报
Live2D