Java中,面試官常常會問到覆蓋和重載這兩個概念。雖然這兩者都與方法有關系,但是它們是完全不同的。
首先,方法的覆蓋(Override)指的是在子類中重新定義一個與父類有同樣方法名、返回類型和參數列表的方法,但是子類方法的具體實現不同于父類的方法。這樣在使用時,當子類對象調用這個方法時,會優先使用子類方法,而不是父類方法。
// 父類 class Parent { public void method() { System.out.println("Parent method"); } } // 子類 class Child extends Parent { @Override public void method() { System.out.println("Child method"); } } public class TestOverride { public static void main(String[] args) { Parent obj = new Child(); obj.method(); // 輸出 Child method } }
而方法的重載(Overload)則是指在一個類中,如果出現了兩個或多個方法,它們的方法名相同而參數列表不同,那么這些方法就是重載方法。重載方法的返回類型可以不同,但是不能僅僅是返回類型不同而已。在使用時,編譯器會根據方法調用所使用的參數列表自動選擇對應的方法。
class MyClass { public void method(int a) { System.out.println("method(int)"); } public void method(int a, int b) { System.out.println("method(int,int)"); } public void method(String str) { System.out.println("method(String)"); } } public class TestOverload { public static void main(String[] args) { MyClass obj = new MyClass(); obj.method(10); // 輸出 method(int) obj.method(10, 20); // 輸出 method(int,int) obj.method("hello"); // 輸出 method(String) } }
在面試中,要想讓自己更加專業和有競爭力,就需要深刻理解和掌握Java中方法的覆蓋和重載這兩個概念,將其在實際開發中應用于解決問題和增加效率。
下一篇div中切換