2017-09-16 1 views
-5

Nun, ich weiß, dass in erster xyz in method(xyz) übergeben wird, wo xyz Variable oder String in Java sein kann, weiter die Methode selbst wird vom Benutzer definiert, so könnte dies sein (oder nicht) hängt von dem Körper, der von geschrieben wird der Kodierer.Logisch, was ist der Unterschied zwischen Methode (xyz) und xyz.method()?

aber jetzt kommt hier der zweite xyz.method(), haben wir hier wissen xyz ist Objekt Sind wir xyz zu dieser Methode wie erste übergeben. Ich meine, was dort drinnen vorgeht. Wie funktioniert das?

Bitte erklären Sie tief, Sie können Beispiel von irgendwelchen davon oder irgendwelchen davon nehmen.

  1. str.length();
  2. str.toChar();

Antwort

1

xyz.method() -> Damit dies funktioniert, ist das Verfahren durch jemanden in der Klasse XYZ ausgesetzt werden, die Klasse XYZ geschrieben hat. Da das Objekt selbst eine Methode aufruft, die es selbst kennt, gibt es nichts, was dem Objekt xyz an die Methode übergeben würde. Innerhalb dieser Methode wird jedoch xyz verfügbar sein, da xyz das aufgerufene Objekt ist.

Methode (xyz) -> Methode geschrieben in jeder Klasse, die Objekt des Typs XYZ erwartet, diese Methode muss nicht unbedingt ein Teil der Klasse XYZ sein. Hier wird xyz als Parameter an Methode übergeben und steht nicht zur Verfügung.

1

method(xyz) bedeutet, dass Sie eine Methode aufrufen, die in der aktuellen Klasse definiert ist.

xyz.method() bedeutet xyz ein Objekt einer Klasse ist (lässt XYZ sagen), und Sie eine Methode aufrufen, die in XYZ Klasse definiert ist.

xyz ist ein Argument, ein Verfahren:

würde Dieser Code-Schnipsel

class XYZ { 
    public void method() { 
     // some code here 
    } 
} 

class SomeOtherClass { 
    public void method1(XYZ xyz) { 
     xyz.method(); // case two 
    } 

    public void mainMethod() { 
     XYZ xyz = new XYZ(); 
     method1(xyz); // case one 
    } 
} 

in ersten Fall Sie mehr hilfreich.

in zweiten Fall:

wir wollen eine Methode aufrufen, die XYZ in der Klasse definiert ist. aber Sie können nicht direkt darauf zugreifen, wie im ersten Fall. Um auf eine Methode oder ein Feld zuzugreifen, das in einer anderen Klasse definiert ist, müssen wir eine Instanz dieser Klasse erstellen (in unserem Fall xyz). Über diese Instanz können wir auf diese Methoden zugreifen, sofern die Methoden nicht privat sind.

1

Aus der Objektorientierung ergibt sich ein logischer Unterschied. Wenn wir zum Beispiel die Methode kill aufrufen, bedeutet xyz.kill(), dass das Objekt xyz Selbstmord begeht und wenn wir die Methode kill(xyz) aufrufen, dann tötet jemand xyz.

Aus technischer Sicht gibt es einen logischen Unterschied, wenn die Methode nicht statisch ist. Die xyz.method() zeigt an, dass xyz nicht null sein muss (soweit die Methode nicht statisch ist). Die method(xyz) zeigt an, dass xyz null sein kann und etwas anderes sein kann.

Darüber hinaus gibt es keinen logischen Unterschied.

Verwandte Themen