zoukankan      html  css  js  c++  java
  • Java之重载(Overload)与重写(Overwrite)总结

    内容来源为:《孙卫琴面向对象编程》,本随笔简单总结,具体内容可参见概述第6章,写的挺清晰;

    一. 重载(Overload)

      1. 有时候类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数(如构造函数就是一种例子);

      2. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一样,那么可以说,一个方法是另一个方法的重载方法。

      3. 重载方法必须满足以下条件

       (1)方法名相同;

       (2)方法的参数类型、个数、顺序至少有一项不同;

       (3)方法的返回值类型可以不同;

       (4)方法的修饰符可以不同;

      4. 在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的方法,Java虚拟机在运行时就无法决定到底执行哪个方法,参数签名是指参数的    类型、个数和顺序。

    二. 重写(OverWrite)

      1. 如果在子类中定义的一个方法,其名称、返回值类型及参数签名正好与父类中的某个方法的名称,返回值类型及参数名相匹配,那么可以说,子类的方法重写了(覆盖)父类的方法;

      2. 重写方法必须满足以下约束条件:

        (1)子类的方法的名称、参数签名和返回值类型必须与父类方法的名称、参数签名及返回值类型一致;

        (2)子类在重写父类方法时,重写方法不能缩小父类方法的访问权限(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);

        (3)子类方法不能抛出比父类方法更多的异常;子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常是父类方法抛出的异常的子类(原因是和多态机制冲突,详细内容可看《Java面向对象编程》);

        (4)方法重写之存在于子类和父类之间(包括直接父类和间接父类),在同一个类中,方法只能重载不能重写。

        (5)父类的静态方法不能被子类重写为非静态方法;

        (6)子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类中的静态方法;

        (7)父类的非静态方法不能被子类重写为静态方法;

        (8)父类中的私有方法不能被子类重写;原因:子类方法重写父类方法的前提是,子类必须能继承父类的特定方法,因此父类中的私有方法不能被子类继承,也就无法构成重写,即使在形式上符合重写的规范,也不能算得上重写;

        (9)父类的抽象方法可以被子类通过两种方式重写,一是实现父类的抽象方法,二是重新声明父类的抽象方法。

        (10)父类的非抽象方法可以被重写为抽象方法。

  • 相关阅读:
    C#连接Oracle数据库的连接字符串
    Oracle
    SQL 计算某月有多少天
    七牛开发者文档中心
    ocrstyle
    Linux的sys接口和proc接口创建
    BusHelper
    MeiTuanLocateCity
    Shop
    Win10预览版10162全新安装及激活全过程图解
  • 原文地址:https://www.cnblogs.com/tjudzj/p/4444183.html
Copyright © 2011-2022 走看看