解析Java繼續中辦法的籠罩和重載。本站提示廣大學習愛好者:(解析Java繼續中辦法的籠罩和重載)文章只能為提供參考,不一定能成為您想要的結果。以下是解析Java繼續中辦法的籠罩和重載正文
辦法的籠罩
在類繼續中,子類可以修正從父類繼續來的辦法,也就是說子類能創立一個與父類辦法有分歧功效的辦法,但具有雷同的稱號、前往值類型、參數列表。
假如在新類中界說一個辦法,其稱號、前往值類型和參數列表正好與父類中的雷同,那末,新辦法被稱做籠罩舊辦法。
參數列表又叫參數簽名,包含參數的類型、參數的個數和參數的次序,只需有一個分歧就叫做參數列表分歧。
被籠罩的辦法在子類中只能經由過程super挪用。
留意:籠罩不會刪除父類中的辦法,而是對子類的實例隱蔽,臨時不應用。
請看上面的例子:
public class Demo{ public static void main(String[] args) { Dog myDog = new Dog("行行圈"); myDog.say(); // 子類的實例挪用子類中的辦法 Animal myAnmial = new Animal("行行圈在線"); myAnmial.say(); // 父類的實例挪用父類中的辦法 } } class Animal{ String name; public Animal(String name){ this.name = name; } public void say(){ System.out.println("我是一只小植物,我的名字叫" + name + ",我會收回啼聲"); } } class Dog extends Animal{ // 結構辦法不克不及被繼續,經由過程super()挪用 public Dog(String name){ super(name); } // 籠罩say() 辦法 public void say(){ System.out.println("我是一只小狗,我的名字叫" + name + ",我會收回汪汪的啼聲"); } }
運轉成果:
我是一只小狗,我的名字叫行行圈,我會收回汪汪的啼聲
我是一只小植物,我的名字叫行行圈在線,我會收回啼聲
辦法籠罩的准繩:
籠罩辦法的前往類型、辦法稱號、參數列表必需與原辦法的雷同。
籠罩辦法不克不及比原辦法拜訪性差(即拜訪權限不許可減少)。
籠罩辦法不克不及比原辦法拋出更多的異常。
被籠罩的辦法不克不及是final類型,由於final潤飾的辦法是沒法籠罩的。
被籠罩的辦法不克不及為private,不然在其子類中只是新界說了一個辦法,並沒有對其停止籠罩。
被籠罩的辦法不克不及為static。假如父類中的辦法為靜態的,而子類中的辦法不是靜態的,然則兩個辦法除這一點外其他都知足籠罩前提,那末會產生編譯毛病;反之亦然。即便父類和子類中的辦法都是靜態的,而且知足籠罩前提,然則依然不會產生籠罩,由於靜態辦法是在編譯的時刻把靜態辦法和類的援用類型停止婚配。
辦法的重載:
後面曾經對Java辦法重載停止了解釋,這裡再強調一下,Java父類和子類中的辦法都邑介入重載,例如,父類中有一個辦法是 func(){ ... },子類中有一個辦法是 func(int i){ ... },就組成了辦法的重載。
籠罩和重載的分歧:
辦法籠罩請求參數列表必需分歧,而辦法重載請求參數列表必需紛歧致。
辦法籠罩請求前往類型必需分歧,辦法重載對此沒有請求。
辦法籠罩只能用於子類籠罩父類的辦法,辦法重載用於統一個類中的一切辦法(包含從父類中繼續而來的辦法)。
辦法籠罩對辦法的拜訪權限和拋出的異常有特別的請求,而辦法重載在這方面沒有任何限制。
父類的一個辦法只能被子類籠罩一次,而一個辦法可以在一切的類中可以被重載屢次。