`

重写与重载的区别

 
阅读更多
重写:在多个类中重写;(关键字:Override)
重载:在一个类中;

重写和重载的区别

与Java相关信息
方法重载,就是在一个类中有好几个方法,它们的方法名都一样,但参数不一样,返回的值也可以一样。
java的重写,是指在子类中对父类的某方法进行重新定义,其子类的该方法名以及参数位置和个数均与父类相同,从而在调用子类的该方法时,不会执行父类的方法.如果在父类中以final定义的方法,在子类中无法重写.
重写的主要优点是能够定义某个子类特有的特征:
      如:
     public class Father {
              public void speak()
              {
                   System.out.println("Father");
              }                      
     }
      public class Son extends Father {
              public void speak()
              {
                   System.out.println("son");
              }                      
     }

    这也叫做多态性,重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法;
    当上例中 Father类 speak()方法被private时,Son类不能重写 Father类 speak()方法,此时Son类 speak()方法相当与在Son类中定义的一个speak()方法.
    Father类 speak()方法一但被final时,无论该方法被public,protected及默认所修饰时,Son类根本不能重写 Father类 speak()方法,试图编译代码时,编译器会报错.例:
       public class Father {
           fianl  public void speak()
              {
                   System.out.println("Father");
              }                      
     }
      public class Son extends Father {
              public void speak()
              {
                   System.out.println("son");
              }                      
     }//编译器会报错.
      
     Father类 speak()方法被时默认修饰时,只能在同一包中,被其子类被重些,如果不在同一包则不能重写.
     Father类 speak()方法被时protoeted时,不仅在同一包中,被其子类被重些,还可以不同包的子类重写.

    重写方法的规则:
     1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
     2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.
     3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
      4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如,
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常.

    而重载的规则:
1.必须具有不同的参数列表;
2.可以有不同的返回类型,只要参数列表不同就可以了;
3.可以有不同的访问修饰符;
4.可以抛出不同的异常;


    重写和重载的区别在于:
    重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值.

    用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般


分享到:
评论

相关推荐

    重写和重载的区别

    ### 重写与重载的区别 #### 一、概述 在面向对象编程中,方法的重写(Overriding)和重载(Overloading)是非常重要的概念。这两种机制可以帮助程序员更灵活地管理和组织代码,提高代码的复用性和可扩展性。 ####...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    JAVA中的方法重写与方法重载区别

    JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...

    C#重写重载与多态

    在C#编程语言中,重写、重载和多态是面向对象编程的三大核心特性,它们对于构建灵活、可扩展的代码结构至关重要。 首先,我们来看“重写”。重写(Override)允许子类对从基类继承来的方法进行重新定义,以便提供...

    Java重写与重载(区别与用途)

    我根据我的理解来谈谈Java中重写方法与重载方法的区别。  重写  Java 中重写又叫覆盖,主要是指继承(extends)父类或者实现(implements)接口时将父类或者接口中已经存在的方法进行重新定义。重写的方法在父类...

    重载与覆写/重写的区别

    重载与覆写/重写的区别 区别 重载 覆写 1 单词 OverLoading Override 2 概念 方法名称相同,参数的类型或个数不同 方法名称相同,参数的类型或个数相 同,返回值类型相同 3 范围 发生在一个类之中...

    重写(override)和重载(overload)的区别

    在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...

    重写与重载的区别共2页.pdf.zip

    在编程领域,重写(Override)与重载(Overload)是两个非常重要的概念,尤其在面向对象编程中。它们都是实现多态性的方式,但各自有着不同的含义和使用场景。接下来,我们将深入探讨这两者的区别。 首先,重载...

    重写与重载.png java分析

    重写与重载.png java分析

    重写和重载的区别.xmind

    重写和重载的区别

    JAVA重写和重载.pdf

    * 重载是指在同一个类中的多态性,而重写是指父类与子类之间的多态性。 * 重载的方法名相同,但参数类型和个数不同,而重写的方法名、返回类型和参数表相同。 * 重载是指类中可以创建多个同名的方法,而重写是指子类...

    Java 重写与重载方法与区别详解

    Java中的方法重写(Override)和重载(Overload)是两种不同的概念,它们都是多态性的体现,但实现方式和目的各有不同。 **重写(Override)** 重写发生在继承关系中,当子类继承父类后,可以对父类中已有的非...

    java中的重载和重写的区别

    总结一下,重载和重写之间的主要区别在于: 1. 重载发生在同一类内,而重写发生在父类和子类之间。 2. 重载依靠参数列表区分方法,而重写需要方法名、参数列表完全一致。 3. 重载不涉及继承关系,而重写必须在继承...

    c++ 重载、覆盖、重写

    ### C++中重载、重写(覆盖)与隐藏的概念及区别 #### 一、引言 在C++面向对象编程中,理解重载、重写(覆盖)以及隐藏的概念至关重要。这些概念不仅有助于我们更好地设计类和继承体系,还能帮助我们避免一些常见的...

    重写与重载

    通过上述分析可以看出,尽管“重写”和“重载”都涉及到了方法名称的重复利用,但它们之间存在着本质的区别。“重写”关注的是子类如何覆盖父类的行为,而“重载”则侧重于同一类中方法的多样性。“重写”用于实现多...

    C++中重载与重写函数区别及虚函数

    ### C++中重载与重写函数的区别及虚函数详解 #### 一、虚函数概述 **1.1 虚函数定义与作用** 在C++中,虚函数是一种特殊的成员函数,它允许子类覆盖父类的行为。虚函数的核心在于实现多态性,即在运行时动态决定...

    方法重载和方法重写

    在编程语言中,方法重载(Overloading)和方法重写(Overriding)是两个非常重要的概念,它们都是实现多态性(Polymorphism)的关键机制。本文将深入探讨这两个概念,以及它们在实际编程中的应用。 ### 方法重载...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的...通过对比分析,我们可以更加清晰地理解Java中重载与重写之间的区别及其应用场景。这对于编写高效、可维护的Java代码至关重要。

    重载、重写、重构.md

    #### 重写的区别于覆盖(new): - **重写(Override)**:使用`override`关键字重写父类的方法时,子类的方法会替代父类的方法,即当通过父类引用调用子类对象时,会执行子类中重写的方法。 - **覆盖(New)**:使用`new...

Global site tag (gtag.js) - Google Analytics