方法重载(overload)
方法名相同,但参数不同(类型不同,个数不同)。
只有返回值不同不构成方法重载。
只有形参的名称不同,不构成方法重载。
方法重写(override)
在子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖。当父类中的方法无法满足子类需求或子类具有特有功能的时候,需要方法重写。
重写【add==>add(只能改变方法体逻辑)】发生在继承(父类)和实现(接口)中…发生在二个以上的类中
重载【add==>add(一定改变参数(类型,个数),也可以改变方法体)】…发生在一个类中
方法重写与方法重载的区别
方法重写
概念:子类继承父类中的方法,想在原有的基础上作一定的修改。
格式特点:
1.方法名、参数列表必须完全一致
2.返回类型可以相同,也可以不同,不同必须是原来返回类型的子类型
2.子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
方法重载
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
格式特点:
1.方法名相同。
2.方法的参数表必须不同
如果参数个数不同,就不考虑它的参数类型
如果参数个数相同,那么参数的类型必须不同。
3.方法的返回类型、修饰符可以相同,也可不同。
子类从父类继承分成两种:
1.方法的继承:
方法的继承,父类直接把自己的方法转移到子类中去,当然前提是父类的方法修饰符的访问范围是子类可以访问的范围,但是如果子类已经重写了父类的方法,这时候这个方法就不能重父类转移到子类中。
2.成员变量的继承 :
成员变量就会有点奇妙了,它不会从父类转移到子类,而是保留在父类中,这就会出现,子类和父类可能同时拥有两个相同名字的变量。