Heim  >  Artikel  >  Best Practices für Java zum Aufrufen überladener Methoden von übergeordneten und untergeordneten Klassen

Best Practices für Java zum Aufrufen überladener Methoden von übergeordneten und untergeordneten Klassen

王林
王林nach vorne
2024-02-09 11:30:09528Durchsuche

PHP Editor Zimo bietet Ihnen die beste Vorgehensweise in der Java-Programmierung – das Aufrufen überladener Methoden der übergeordneten Klasse und der Unterklasse. In Java ist Vererbung ein wichtiges objektorientiertes Programmierkonzept, das es Unterklassen ermöglicht, die Eigenschaften und Methoden übergeordneter Klassen zu erben. Eine Methodenüberladung tritt auf, wenn sowohl die übergeordnete Klasse als auch die Unterklasse Methoden mit demselben Namen definieren. In diesem Fall müssen wir darauf achten, wie die überladenen Methoden der übergeordneten Klasse und der Unterklasse korrekt aufgerufen werden, um die Korrektheit und Wartbarkeit des Programms sicherzustellen. In diesem Artikel erhalten Sie eine detaillierte Einführung in die Best Practices zum Aufrufen überladener Methoden von übergeordneten Klassen und Unterklassen, um Ihnen den Einstieg in die Java-Programmierung zu erleichtern.

Frageninhalt

Was ist der beste Weg, eine Methode aufzurufen, die sowohl von übergeordneten als auch von untergeordneten Klassen überlastet ist? Zum Beispiel. Angenommen, ich habe einen Eltern-Kind-Kurs

private class parent{
        public parent() {
        }
    }
    
    private class child extends parent{
        string name;

        public child(string name) {
            this.name = name;
        }
    }

Ich möchte eine Methode erstellen, die beide überlastet

private void methodcall(parent parent){
        system.out.println("parent class");
    }

    private void methodcall(child child){
        system.out.println(child.name);
    }

Ich habe eine Methode erstellt, um ein übergeordnetes oder untergeordnetes Element zu erstellen und die Methodenaufrufmethode aufzurufen

private void callMethod(String name){
        Parent parent;
        if(name != null) {
            parent = new Child(name);
        } else {
            parent = new Parent();
        }
        methodCall(parent);
    }

Dies scheint immer die übergeordnete Methode aufzurufen. Wie kann ich die untergeordnete Methode aufrufen, ohne das Objekt explizit in das untergeordnete Objekt umzuwandeln?

Workaround

Meiner Meinung nach sollten Sie es in der Superklasse parent 中创建一个名为 methodcall() 的方法,并分别在 child so überschreiben:

protected void methodcall(){
    system.out.println("parent class");
}

im Unterricht child

@override
protected void methodcall(){
    system.out.println(this.name);
}

Dann rufst du so anmethodcall

Die Signatur einer
private void callmethod(string name){
    parent parent;
    if(name != null) {
        parent = new child(name);
    } else {
        parent = new parent();
    }
    parent.methodcall();
}

-Methode wird durch ihren Namen und ihre Parameterliste bestimmt. Das bedeutet, dass methodcall(parent)methodcall(client) anders ist.

Was Sie wollen, ist keine Überlastung, sondern Überforderung. Sie wissen, was ich meine, wenn Sie die Annotation @override zu einer Methode in @override 添加到 child in Ihrem Code hinzufügen – der Compiler wird sich beschweren ...

Wenn Sie die Definition der Klasse unverändert lassen, müssen Sie in child 才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall() 是非静态的(或者您有让 callmethod() 作为 child umwandeln, um die entsprechende Methode aufzurufen – obwohl dies überhaupt nicht funktioniert, da methodcall() nicht statisch ist (bzw Sie müssen callmethod() als Mitglied von

zulassen.

Oder Sie ändern Ihren Code so:

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 );
  }
}

Verwenden Sie es so:

public static void callMethod( final String name )
{
  Parent parent;
  if( name != null ) 
  {
    parent = new Child( name );
  } 
  else 
  {
    parent = new Parent();
  }
  parent.methodCall(parent);
}

Das obige ist der detaillierte Inhalt vonBest Practices für Java zum Aufrufen überladener Methoden von übergeordneten und untergeordneten Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen