首頁 >Java >呼叫父類別和子類別重載方法的 Java 最佳實踐

呼叫父類別和子類別重載方法的 Java 最佳實踐

王林
王林轉載
2024-02-09 11:30:09590瀏覽

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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除