在Java中,隱藏和覆蓋是兩個非常重要的概念,它們都涉及到類和方法之間的關系。雖然這兩個概念看起來相似,但是它們之間有一些關鍵的區別。
隱藏指的是在子類中定義了與父類中同名的方法或者變量,此時父類中同名的方法或變量將被隱藏。子類對象調用該方法或變量時,將只能訪問到子類中定義的方法或者變量,無法訪問到父類中同名的方法或者變量。
public class Parent{ public void print() { System.out.println("Parent Method"); } } public class Child extends Parent{ public void print() { System.out.println("Child Method"); } public static void main(String args[]) { Child obj = new Child(); obj.print(); } }
在上面的例子中,子類Child繼承了父類Parent中的print()方法,并重寫了該方法。此時,當我們創建Child類對象,并調用print()方法時,將輸出"Child Method"。這是因為子類重寫了父類中的print()方法,子類對象調用該方法時將只能訪問到子類中的方法,而無法訪問到父類中的方法。
覆蓋指的是在子類中重寫了父類中同名的方法,此時子類對象調用該方法時將優先調用子類中定義的方法,如果該方法沒有在子類中被定義,則將優先調用父類中的相應方法。
public class Parent{ public void print() { System.out.println("Parent Method"); } } public class Child extends Parent{ public void print() { super.print(); // 調用父類中的print()方法 System.out.println("Child Method"); } public static void main(String args[]) { Child obj = new Child(); obj.print(); } }
在上面的例子中,子類Child繼承了父類Parent中的print()方法,并在子類中重寫了該方法。此時,當我們創建Child類對象,并調用print()方法時,將輸出"Parent Method"和"Child Method"。這是因為子類重寫了父類中的print()方法,并在子類中調用了父類中的print()方法,子類對象調用該方法時優先調用子類中的方法,如果子類中未定義該方法,則將優先調用父類中的方法。
上一篇css規則中文對照表