zoukankan      html  css  js  c++  java
  • 重载与重写、多态——java

    img

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

    • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

    • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

    • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

    当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。

    要想调用父类中被重写的方法,则必须使用关键字 super

    例如:

     public Salary(String name, String address, int number, double salary) {
            super(name, address, number);
            setSalary(salary);
        }

     

    img

     

    多态存在的三个必要条件

    1. 继承

    2. 重写

    3. 父类引用指向子类对象

    比如:

     Parent p =newChild();

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法

    例子解析: 
    实例中,实例化了两个 Salary 对象:一个使用 Salary 引用 s,另一个使用 Employee 引用 e。 
    当调用 s.mailCheck() 时,编译器在编译时会在 Salary 类中找到 mailCheck(),执行过程 JVM 就调用 Salary 类的 mailCheck()。 
    因为 e 是 Employee 的引用,所以调用 e 的 mailCheck() 方法时,编译器会去 Employee 类查找 mailCheck() 方法 。
    在编译的时候,编译器使用 Employee 类中的 mailCheck() 方法验证该语句, 但是在运行的时候,Java虚拟机(JVM)调用的是 Salary 类中的 mailCheck() 方法。 ​ 
    以上整个过程被称为虚拟方法调用,该方法被称为虚拟方法。
     

     

    Java中所有的方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。

    多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

     

  • 相关阅读:
    如何将SQLServer2005中的数据同步到Oracle中【转】
    八大排序算法总结[转]
    Web报表相关汇集(个人收藏)
    分析:城域网技术PBT交锋TMPLS
    Ubuntu下通过SSH远程登录服务器的方法
    关于VC代码的编写和调试(三)
    Start Starts a separate window to run a specified program or command.
    罗技劲雕鼠标移动速度过慢问题
    Microsoft XML Core Services 4.0 SP2 KB936181老是提示安装(转,不过我也遇到这个问题了)
    四川人逆境中的幽默
  • 原文地址:https://www.cnblogs.com/gaoyang666/p/10831273.html
Copyright © 2011-2022 走看看