2017-01-19 6 views
-2

Hallo, ich muss einen Frosch fangen eine Fliege machen. Ich habe den Code angegeben werden sie die Methode testen, und sie werden beide verwendenMögliche leere Argument beim Aufruf der Methode

catchFly(); 

catchFly(3); 

gibt es eine Möglichkeit für beide Möglichkeiten gerecht zu werden, wenn dies geschehen, da ich weiß nicht, wie wenn zu überprüfen, da sind noch Argumente

public void catchFly() 

    { 

     super.catchFly(); 
     account.credit(100); 
     super.yellow(); 
     super.jump(); 
     super.green(); 

    } 
+2

Sie meinen, anders als eine Methode 'public void catchFly (int n) {...}' zu erstellen? Wenn Sie sich Gedanken über Codeänderungen machen, können Sie den Code von 'catchFly' ändern, um einfach die andere Methode aufzurufen:' public void catchFly() {catchFly (100); } '. – AntonH

+0

Ich dachte, wenn du es so machst und der Benutzer nie ein Argument gab, würde es nicht funktionieren. oder liege ich falsch? – bighead

+0

Wenn Sie 2 Methoden haben, eine mit Parametern und eine ohne, und Sie machen Ihren Methodenaufruf ohne, dass das, s der, der aufgerufen wird. – AntonH

Antwort

0

zuerst die Methode definieren, die das Argument erfordert:

public void catchFly(int value) { 
    super.catchFly(); 
    account.credit(value); 
    super.yellow(); 
    super.jump(); 
    super.green(); 
} 

Welche können Sie verwenden, wenn der Wert bekannt ist:

catchFly(3); 

Dann gilt für Fälle, in denen der Wert nicht bekannt ist Definieren Sie eine Überlast, die den hartcodierten Standardwert liefert:

public void catchFly() { 
    catchFly(100); 
} 

die Sie ohne ein Argument nennen kann:

catchFly(); 

In Fällen wie diesem die Überlastungen sind in der Regel Methoden-Passthrough, die die Haupt-Logik-Methode aufrufen, einfach standardmäßig bereitstellt, wo nötig.

0

ja, es ist möglich, Methode Überlastung ist der Name für die

definieren einfach eine andere Methode mit dem gleichen Namen, aber anderem Argumente (was eine Signatur einer Methode ist)

public void catchFly(int whatEver){ 
    super.catchFly(); 
    account.credit(whatEver); 
    super.yellow(); 
    super.jump(); 
    super.green(); 
} 
Verwandte Themen