Java是一門面向對象的編程語言,其中最基本的面向對象的概念之一就是重載(overloading)與覆蓋(overriding)。簡單來說,重載和覆蓋都與方法有關:
重載
重載是指在同一個類中定義多個方法名相同但形參列表不同的方法。Java中允許通過改變方法的參數類型和數量來實現方法的重載。例如:
public class Demo{ public void printInfo(int num){ //函數體 } public void printInfo(String str){ //函數體 } }
以上代碼中有兩個名為printInfo的方法:一個接受整數參數,一個接受字符串參數。這兩個方法的方法名相同但形參列表不同,因此它們構成了方法的重載。
覆蓋
覆蓋是指在子類中定義一個與父類中方法名、參數和返回值類型都相同的方法,以此覆蓋父類中的方法。因此,在運行時,當存在同名方法時,對象會調用覆蓋版本而非父類版本。例如:
public class Parent{ public void printInfo(){ System.out.println("Hello from Parent"); } } public class Child extends Parent{ public void printInfo(){ System.out.println("Hello from Child"); } }
以上代碼中,Child繼承了Parent類,并覆蓋了它的printInfo方法。因此,當Child對象調用printInfo方法時,將輸出“Hello from Child”,而調用Parent對象的printInfo方法時,則輸出“Hello from Parent”。
重載與覆蓋的關系
重載和覆蓋都是Java中的面向對象特性,用于實現多態性。它們雖然都涉及方法,但它們有很大的區別:
- 方法重載是指在同一個類中定義多個同名但形參列表不同的方法,而方法覆蓋則是子類定義了與父類同名、同參數的方法
- 方法重載是在編譯時確定調用哪個方法,而方法覆蓋是在運行時確定
總而言之,方法重載和方法覆蓋在Java中都是重要的概念,要熟練掌握。而在實際編程中,我們可以根據需要對方法進行重載或覆蓋,以實現多樣化的應用。
下一篇php ip每天