重写和重载的区别
1. 重写
当子类存在一个和父类一模一样 的方法时,我们称子类覆盖了父类的方法,也称为重写(Override)。
重写发生在父子类中,方法名、参数列表必须相同
1.1 方法调用顺序
通过子类对象调用方法时,现在子类中查找有没有对应的方法,如果存在就执行子类的,否则执行父类的,如果父类也没有,就会报错。
1.2 方法覆盖细节:
- private修饰的方法不能被子类所继承,不能重写
- 实例方法签名必须相同 (方法签名 = 方法名 + 方法的参数列表)
- 子类方法的返回值类型和父类方法的返回类型相同或者是其子类
- 子类方法中声明抛出的异常小于或等于父类方法声明抛出的异常类型
- 子类方法的访问权限大于或等于父类方法的访问权限
使用方式:直接拷贝父类中方法的定义到子类中,然后重新编写方法体即可。
2. 重载
2.1 方法重载:
在同一个类中,允许某方法存在一个以上的同名方法,只要它们的参数列表不同即可
注意:方法重载发生在同一个类中
2.2 参数列表:
参数的类型 + 参数的个数 + 参数的顺序
2.3 方法签名:
方法名称 + 方法参数列表,在同一个类中,方法签名是唯一的,否则编译报错
2.4 方法重载判断原则: 两同一不同
- 两同: 在同一个类中,方法名是相同的
- 一不同:方法参数列表不同(参数类型、参数个数、参数顺序)
只要参数类型、参数个数、参数顺序任意一个不同,就叫参数列表不同。
2.5 方法重载的作用
屏蔽了同一功能的方法由于参数不同所造成方法名称不同
注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型相同。
版权声明:本文为qq_42319677原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。