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


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

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

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

  • 相关阅读:
    BZOJ_1221_ [HNOI2001]_软件开发(最小费用流,网络流24题#10)
    POJ_1269_Intersecting_Lines_(计算几何基础)
    BZOJ_2049_[Sdoi_2008]_Cave_洞穴勘测_(LCT/并查集)
    BZOJ_2002_弹飞绵羊_(LCT)
    BZOJ_3282_Tree_(LCT)
    CodeForces_#354_Div.2_2016.5.25(A+B+C)
    BZOJ_1609_[Usaco2008_Feb]_Eating_Together_麻烦的聚餐_(动态规划,LIS)
    BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)
    BZOJ_1606_ [Usaco2008_Dec]_Hay_For_Sale _购买干草_(背包)
    2010多校第一题 hdu3440House Man 差分约束系统
  • 原文地址:https://www.cnblogs.com/Qmin/p/16318366.html
Copyright © 2020-2023  润新知