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.
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?
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
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
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!