java方法的重写和重载的区别理解

  • 1.方法的重写
  • 在java程序中,我们都知道类的继承可以产生一个子类,然而子类继承父类,他具备了父类的所有的特征,继承了父类所有的方法和变量.
  • 一.方法重写
  • 二.重写规则
  • 三、方法重载(Overloading)


1.方法的重写

在java程序中,我们都知道类的继承可以产生一个子类,然而子类继承父类,他具备了父类的所有的特征,继承了父类所有的方法和变量.

一.方法重写

1.子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展时,增大功能时,我们把这种操作方法称之为:重写,也可以叫 覆盖或者覆写

2.重写方法体现出了 java的优越性,重写是建立在继承关系上的,这种方式使语言结构更加丰富.在Java的继承中,子类既可以隐藏和访问父类的方法,也可以覆盖继承父类的方法

3.在Java中覆盖继承父类的方法就是通过方法的重写来实现的.所谓方法就是重写是指子类中的方法与 父类中继承的方法有完全相同的返回值,方法名,参数个数和参数类型.这样就可以实现对父类方法的覆盖

4.如果子类将父类中的方法重写了,调用的时候肯定是调用被重写过的方法,那么如果现在一定要调用父类中的方法怎么办? 我们可以使用super关键字就可以实现这个功能,super关键字可以从子类访问父类中的内容,如果要访问被重写过的方法,使用"super.方法名(参数)"的形式调用.

对于super关键字,不一定非要在方法重写之后使用,也可以明确地表示某个方法是从父类中继承而来的.使用super只是更加明确的说,要从父类中查找,就不在子类中查找!

二.重写规则

1.父类方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为 重写 而是 重载!
2.父类的返回类型必须与被子类重写的方法返回类型相同,否则不能称其为 重写 而是 重载!
3.Java中规定,被子类重写的方法不能拥有比父类方法更加严格的访问权限.
编写过Java程序的人就知道,父类中的方法并不是在任何情况下都可以重写的,当父类中方法的访问权限修饰符为private时,该方法只能被自己的类访问,不能被外部类访问,在子类是不能被重写的,如果在父类的方法定义public,在子类中定义private,程序运行时就会报错. 由于父类的访问权限修饰符的权限一定要大于子类被子类重写方法的访问权限修饰符,private权限最小.所以如果某一个方法在父类中的访问权限是private,那么就不能在子类中对其进行重写,如果重新定义,也只是定义了一个新的方法,不会达到重写的效果!

三、方法重载(Overloading)

**

方法重载是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。
所谓方法重载是指在一个类中,多个方法的方法名相同,但是参数列表不同。参数列表不同指的是参数个数、参数类型或者参数的顺序不同。

方法的重载在实际应用中也会经常用到。不仅是一般的方法,构造方法也可以重载。

在方法重载时,方法之间需要存在一定的联系,因为这样可以提高程序的可读性,一般只重载功能相似的方法。

重载是指我们可以定义一些名称相同的方法,通过定义不同的参数来区分这些方法,然后再调用时,Java虚拟机就会根据不同的参数列表来选择合适的方法执行

。也就是说,当一个重载方法被调用时,Java用参数的类型或个数来决定实际调用的重载方法。因此,每个重载方法的参数的类型或个数必须是不同。

虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。

当Java调用一个重载方法是,参数与调用参数匹配的方法被执行。在使用重载要注意以下的几点:
1.在使用重载时只能通过不同的参数列表,必须具有不同的参数列表。

2.不能通过访问权限、返回类型、抛出的异常进行重载。
3.方法的异常类型和数目不会对重载造成影响。
4.可以有不同的返回类型,只要参数列表不同就可以了。
5.可以有不同的访问修饰符。

6.可以抛出不同的异常。**

java 不重写接口方法 java中重写_父类


希望通过这种方式 能够更深的理解