• 重载与重写、多态——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中所有的方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。

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

     

  • 相关阅读:
    解决phpmailer可以在windows下面发送成功, 在linux下面失败的问题
    centos安装svn
    linux下面配置安装nodejs+npm
    排序与搜索
    链表
    栈和队列
    顺序表
    初识算法、数据结构
    Linux_02
    Linux_01
  • 原文地址:https://www.cnblogs.com/gaoyang666/p/10831273.html
Copyright © 2020-2023  润新知