php小編子墨為你帶來Java程式設計中的最佳實踐-呼叫父類別和子類別重載方法。在Java中,繼承是一種重要的物件導向程式設計概念,它允許子類別繼承父類別的屬性和方法。當父類別和子類別都定義了同名的方法時,就產生了方法重載。在這種情況下,我們需要注意如何正確地呼叫父類別和子類別的重載方法,以確保程式的正確性和可維護性。本文將為你詳細介紹呼叫父類別和子類別重載方法的最佳實踐,幫助你在Java程式設計中更加得心應手。
呼叫父類別和子類別都重載的方法的最佳方法是什麼 例如。說我有一個家長和孩子班級
private class parent{ public parent() { } } private class child extends parent{ string name; public child(string name) { this.name = name; } }
我想創建一個對兩者都重載的方法
private void methodcall(parent parent){ system.out.println("parent class"); } private void methodcall(child child){ system.out.println(child.name); }
我創建了一個方法來建立父級或子級並呼叫 methodcall 方法
private void callMethod(String name){ Parent parent; if(name != null) { parent = new Child(name); } else { parent = new Parent(); } methodCall(parent); }
這似乎總是呼叫 parent 方法,如何在不明確地將物件強制轉換為子物件的情況下呼叫子方法?
在我看來,您應該在超類別parent
中建立一個名為methodcall() 的方法,並分別在child
中重寫它,如下所示:
protected void methodcall(){ system.out.println("parent class"); }
在 child
類別中
@override protected void methodcall(){ system.out.println(this.name); }
然後你這樣呼叫methodcall
private void callmethod(string name){ parent parent; if(name != null) { parent = new child(name); } else { parent = new parent(); } parent.methodcall(); }
方法的簽名由名稱和參數清單決定。這意味著 methodcall(parent)
和 methodcall(client)
是不同的。
你想要的不是超載,而是壓倒性的。當您在程式碼中將註解 @override
加入到 child
中的方法時,您明白我的意思 - 編譯器會抱怨...
如果您保留類別的定義不變,則必須轉換為child
才能呼叫對應的方法- 儘管這根本不起作用,因為methodcall()
是非靜態的(或者您有讓callmethod()
作為child
的成員。
或你像這樣改變你的程式碼:
class parent { public parent() {} public <t extends parent> void methodcall( final t arg ) { out.println( getclass().getname() ); } } class child extends parent { string name; public child( string name ) { this.name = name; } @override public <t extends parent> void methodcall( final t arg ) { out.println( name ); } }
像這樣使用它:
public static void callMethod( final String name ) { Parent parent; if( name != null ) { parent = new Child( name ); } else { parent = new Parent(); } parent.methodCall(parent); }
以上是呼叫父類別和子類別重載方法的 Java 最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!