Override 与OverLoad的区别
- 这个本来应该在写实验的时候就写完,但是当时老是被乱七八糟的事分去精力,做往年期末复习题遇到了相关知识点,现在补上,作为复习整理。
多态性的不同表现
- Override:在子类中如果需要定义一个与父类重名且参数相同的方法,这种操作成为重写(Override)。当我们调用子类的这个方法时,父类中的同名方法将被屏蔽。
- OverLoad:在同一个类中如果需要定义多个同名的方法,参数不同(个数不同,类型不同,次序不同),这种操作成为重载(OverLoad)。
- Override和Overload都是多态性的表现。Override是父类与子类之间的多态性,而Overload是一个类中的同名方法之间的多态性。
Override和OverLoad的特点的不同:
- Override:
- Override的方法的标志必须和被覆盖的方法表示完全一致(方法名,参数)。
- Override的返回值必须和被覆盖的方法一致。
- Override抛出的异常必须和被覆盖方法一致,也可以是被覆盖方法异常的子类(外部方法必须“接得住”)
- private修饰的方法不需Override,因为原方法只作用于父类内部,即使同名,也认为是子类的新方法,不存在重写或覆盖。
- final修饰的方法不能重写
- Overload:
- OverLoad时,参数不能一样,不管是参数类型,参数个数还是参数顺序(如果考虑参数顺序,则参数的类型不能都相同),反正不能都一样
- 不能通过访问权限、返回类型、抛出的异常进行虫子啊。
- 方法的异常类型或数目不影响重载。
- 互为Overload的方法一定在同一个类内(本质上是相互替代的关系,具体谁替代谁又输入参数信息决定;Override是单向替代,子类中override父类原方法直接下班)。
- 子类中出现和父类方法名相同的方法,但参数不同,这种情况既不是Override(因为参数不同),
也不是Overload(不在同一个类中),而是不同的方法。