覆蓋(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