闲暇之余,大伙讨论招人的事,说到基础,萌到一片,来点面向对象的好家伙,大家都懂,就是不好记,贴下当年总结的:
==============================================================
相同:都是方法名相同。
-------------------------------------------------
两者之不同:
重载 (overload):指方法名相同,方法的参数个数或参数类型或参数顺序不同,使用时通过同一个方法名接收不同参数 获得不同的功能
1、无所不在。只要是一个类文件,就可以在里面重载方法。(重载的方法可以一个在父类,一个在子类)
2、只跟方法参数有关(个数、类型、顺序),与其他无关(方法的返回类型、方法的访问修饰符(权限))。
下面这些都会被认为是一个方法,无法通过编译
public int a(){...} 与 public String a(){...}
public int a(){...} 与 private int a(){...}
public int a(int a,int b){...} 与 public int a(int b,int a){...}
重写(override,【覆盖】):指子类把从父类那继承到的方法内容进行修改,使得子类方法的功能与父类不同
1、只存在子类与父类中,没有继承,无从谈重写。
2、子类中的重写方法 必须在 “返回类型”、“参数类型”,“参数个数”与父类完全一样(即除看参数外还看返回类型),在 访问权限上,只能够扩大父类的方法访问权限,不能够缩小,如父类方法的访问权限为default,子类方法可以改为 public, 但不可以弄成private
3. 子类方法不能抛出比父类方法更多更大的异常,如父类方法是 IOException,子类方法不能够抛 Exception
可抛FileNotFoundException,也可以什么都不抛
-----口决
重载重载,无处不在,只与参数关,其他都无关。
重写重写,继承才写,参数同,类型(返回类型与参数类型)同。权限可大,异常可小,其它来不倒。