Heim > Java > 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

王林
Freigeben: 2024-02-09 11:30:09
nach vorne
606 Leute haben es durchsucht

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;
        }
    }
Nach dem Login kopieren

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);
    }
Nach dem Login kopieren

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);
    }
Nach dem Login kopieren

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");
}
Nach dem Login kopieren

im Unterricht child

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

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();
}
Nach dem Login kopieren

-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 );
  }
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage