在学习方法的阶段我学习了方法重载(Overload),而在学习面向对象三大特性之继承的时候我又学习了方法重写(Override)。
概念:
方法重载:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数不同或者类型不同即可。
方法重写: 子类中出现和父类中一模一样的方法声明,方法的名称和参数列表都相同。
特点:
方法重载:与返回值类型无关,只看方法名和参数列表 在调用时,虚拟机通过参数列表的不同来区分同名方法。
方法重写: 创建子类对象时方法名相同就调用子类的。
使用场景:
方法重载:在同一个类需要定义两个或者多个方法,方法功能相似但参数类型不同时,使用方法重载使方法名相同。
方法重写:当子类需要父类的功能,而功能主体子类又有自己特有的功能时,可以重写父类的方法。这样即沿袭了父类的功能,也定义了子类特有的功能(使用super关键字)
注意事项:
方法重载:
方法重载参数列表的不同可以分为:1、参数个数不同; 2、参数类型不同, 3、参数的多类型顺序不同。
举例:1、 (int a, int b) (int a, int b, int c)
2、 (int a, int b) (double a, doule b)
3、 (int a, doule b) (doulbe a, int b)
方法重写:
1、父类的私有方法不能被子类重写。
2、子类重写父类的方法访问权限不能更低(Java 中一共有四种访问权限控制,其权限控制的大小情况是这样的:public > protected > (default) > private )。
权限修饰符
|
public |
protected |
default |
private |
同一类中 |
√ |
√ |
√ |
√ |
同一包子类,其他类 |
√ |
√ |
√ |
|
不同包 子类 |
√ |
√ |
|
|
不同包 其他类 |
√ |
|
|
|
3、子类方法的返回值必须小于等于父类方法的返回值范围。
4、静态的方法也要使用静态方式书写。