在Java編程中,隱藏和重寫(xiě)是兩個(gè)重要的概念,通常用于實(shí)現(xiàn)多態(tài)性。下面將對(duì)這兩個(gè)概念進(jìn)行簡(jiǎn)單的介紹。
隱藏
在Java中,如果子類(lèi)中的某個(gè)方法與父類(lèi)中的方法同名,參數(shù)列表也相同,那么子類(lèi)方法會(huì)隱藏父類(lèi)方法,即只能訪問(wèn)子類(lèi)方法,而不能訪問(wèn)父類(lèi)方法。這種行為被稱為方法隱藏或者方法重載。
重寫(xiě)
重寫(xiě)是指子類(lèi)中的方法與父類(lèi)中的方法同名,但是參數(shù)列表卻不同,子類(lèi)方法可以擁有自己的新的實(shí)現(xiàn)。重寫(xiě)時(shí),訪問(wèn)修飾符不能少于父類(lèi)中的方法,而不能增加。在執(zhí)行時(shí),自動(dòng)調(diào)用子類(lèi)的方法,而不是父類(lèi)的方法,這種行為被稱為方法的重寫(xiě)或者方法覆蓋。
需要注意的是,重寫(xiě)與隱藏的方法名相同,但參數(shù)列表不同。
public class Parent { public void methodOne(int a) { System.out.println(a); } public void methodTwo() { System.out.println("Parent Method"); } } public class Child extends Parent { public void methodOne(double b) { System.out.println(b); } public void methodTwo() { System.out.println("Child Method"); } } public class MainClass { public static void main(String[] args) { Parent obj1 = new Parent(); obj1.methodOne(10); //Output : 10 obj1.methodTwo(); //Output : Parent Method Child obj2 = new Child(); obj2.methodOne(10.0);//Output : 10.0 obj2.methodTwo(); //Output : Child Method } }
從上面的代碼可以看出,子類(lèi)Child中methodOne和父類(lèi)Parent中的methodOne方法具有相同的名稱,但是參數(shù)列表不同。在調(diào)用時(shí),不同的參數(shù)類(lèi)型將決定執(zhí)行哪個(gè)方法。