学习方法

方法重载和方法重写的区别是什么

时间:2022-11-16 04:12:46 学习方法 我要投稿
  • 相关推荐

方法重载和方法重写的区别是什么

  java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。以下是小编为大家带来的方法重载和方法重写的区别是什么,希望大家喜欢。

  java中方法重载和重写的区别和定义

  重载:一个类中有一个方法A,你又在这个类中创建了一个方法B,方法B的名字和A一样,返回值类型也一样,但是参数的类型或个数不同,此时B重载了A。

  例如:

  public class TestClass{

  public int test(int i){return 1;}

  public int test(float f){return 1;}

  }

  重写:一个类M继承另一个类N,N中有一个方法A,这时你在M写了一个方法B,方法B的名字、返回值以及参数都和A一样,此时B重写了A。

  例如:

  public class TestClass1{

  public int test(int i){return 1;}

  }

  public class TestClass2 extends TestClass1{

  public int test(int i){return 2;}

  }

  重写和重载的区别

  1.重写

  是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称和参数,且方法的返回值类型与抛出异常的类型各自与父类的一致,我们说该方法被重写 。

  子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。

  2. 重载

  是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

  3.重写与重载的区别

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

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

  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时,不仅在同一包中,被其子类被重些,还可以不同包的子类重写。

  4.重写和重载在规则上的区别

  重写的规则

  1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载。

  2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

  3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)。

  4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

  例如:父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

  重载的规则

  1.必须具有不同的参数列表。

  2.可以有不同的返回类型,只要参数列表不同就可以了。

  3.可以有不同的访问修饰符。

  4.可以抛出不同的异常。

【方法重载和方法重写的区别是什么】相关文章:

方法重载和方法重写的概念和区别09-06

方法重载与覆盖的区别11-04

方法重载的条件09-23

读书的方法和技巧07-27

预习的策略和方法04-23

读书方法和心得03-14

即兴演讲的技巧和方法04-23

育儿经验和方法心得07-26

学好英语的方法和技巧08-31

议案和提案的区别是什么03-04