重写与重载的区别

Q1:什么是方法的重写?

A1:子类继承父类的时候,可以修改从父类继承下来的方法。

 

Q2:什么是方法的重载?

A2:在同一个类中,就可以定义多个同名的方法,但是这些同名的方法,参数个数 / 类型 / 参数顺序应该保持不同

 

Q3:两者的区别?

A3:区别在于使用范围不同,重写是针对父类和子类,是两个类中方法的比较;而重载是针对同一个类中的方法

 

Q4:Java中为什么提供方法的重写和重载?

A4:保证程序的多态性

 

一、方法的重写(override)

从上面的程序中,我们可以看到,Son类对Father类中的getSkills()方法进行了重写。

重写父类的方法必须注意一下几个问题;

(1)子类中重写的方法必须与父类中被重写的方法方法名一样,参数也一样,返回类型也一样,只是方法体不一样而已

(2)子类重写方法的访问权限必须大于等于父类中被重写方法的访问权限

比如上面的程序,如果将Son类的getSkills()方法去掉前面的public,则程序会出错。

(3)子类重写的方法不能比父类中被重写的方法抛出更多种类的异常

比如,父类中getSkills()没有抛出异常,而子类中getSkills()抛出Exception异常,则程序会出错

 

二、方法的重载(override)

从上面的程序可以知道,方法重载是在同一个类中,方法名称相同,参数个数不同或者参数类型不同,从而同时存在类中

值得注意的是,如果两个方法中仅是方法的返回类型不同,其他都相同,则这不是方法的重载,在编译的过程中会出现问题。

posted @ 2018-08-02 19:22  张明洋  阅读(187)  评论(0编辑  收藏  举报