Java中有兩個概念很相似,但是意義卻有所不同的,它們是遮掩和遮蔽。
遮掩指的是在子類中定義了與父類中相同的變量或方法,此時子類的這個成員變量或方法就遮蓋了父類中的同名成員變量或方法。在對該成員變量或方法進行調用時,會默認使用子類中的成員變量或方法。
public class Parent { public int num = 10; public void method() { System.out.println("Parent Method"); } } public class Child extends Parent { public int num = 20; public void method() { System.out.println("Child Method"); } public void test() { System.out.println(num); // 輸出20 method(); // 輸出Child Method } }
遮蔽與遮掩類似,也是指在子類中定義了與父類中相同名字的變量或方法。但是在遮蔽中,如果要使用父類中的成員變量或方法,則需要使用super
關鍵字。
public class Parent { public int num = 10; public void method() { System.out.println("Parent Method"); } } public class Child extends Parent { public int num = 20; public void method() { System.out.println("Child Method"); } public void test() { System.out.println(num); // 輸出20 System.out.println(super.num); // 輸出10 method(); // 輸出Child Method super.method(); // 輸出Parent Method } }
在實際應用中,遮掩和遮蔽都可以用來實現多態性,提高程序的可擴展性。
上一篇python的解釋性