方法的覆盖(override)、重载(overload)和重写(overwrite)
覆盖(override)
继承了父类的同名无參函数:当子类从父类继承一个无參方法,而又定义了一个同样的无参数的方法时,则子类新写的方法覆盖父类的方法,成为覆盖。
Example
class Super{ public void NoParametersMethod(){ System.out.println("Super Method...."); } } class subClass extends Super { public void NoParametersMethod(){ System.out.println("subClacc Method...."); } } class override{ public static void main(String[] args) { subClass sub = new subClass(); sub.NoParametersMethod(); } }
Output
subClacc Method....
重载(overload)
继承了父类的同名有參函数:当子类继承了父类的一个同名参数,且方法参数表不同,则称为重载,通过方法重载,子类可以重新实现父类的某些方法,使其具有自己的特征。
Example
class Super{ public void WithParametersMethod(int a){ System.out.println("Super Method:"+a); } } class subClass extends Super { public void WithParametersMethod(int a,int b){ System.out.println("subClacc Method:"+a+","+b); } } class overload{ public static void main(String[] args) { subClass sub = new subClass(); sub.WithParametersMethod(0); sub.WithParametersMethod(1,2); } }
Output
Super Method:0
subClacc Method:1,2
重写(overwrite)
当前类的同名方法:通过方法重写,一个类中可以有多个具有相同名字的方法,由传递给他们的不同个数和类型的参数,甚至不同参数顺序(不推荐)来决定使用哪种方法
Example
class Curr{ public void fun(int i) { System.out.println("int"); } public void fun(int i,String s){ System.out.println("int,String"); } public void fun(String s,int i){ System.out.println("String,int"); } } class override{ public static void main(String[] args) { Curr curr = new Curr(); curr.fun(0); curr.fun(0, ""); curr.fun("", 0); } }
Output
int
int,String
String,int