2017-09-16 2 views
-5

Eh bien, je sais que dans le premier xyz est passé en method(xyz) où xyz peut être variable ou String en Java, en outre la méthode elle-même est définie par l'utilisateur de sorte que cela pourrait être (ou pas) de retour dépend du corps qui est écrit par le codeur.Logiquement, quelle est la différence entre la méthode (xyz) et xyz.method()?

mais maintenant voici le second xyz.method(), est-ce que nous savons ici xyz est l'objet Passons-nous xyz à cette méthode tout comme le premier. Je veux dire ce qui se passe à l'intérieur Comment ça fonctionne?

S'il vous plaît expliquer en profondeur, vous pouvez prendre exemple de tout cela ou de tout cela.

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

Répondre

1

xyz.method() -> Pour que cela fonctionne, la méthode doit être exposée à l'intérieur de la classe XYZ par une personne qui a écrit la classe XYZ. Puisque l'objet lui-même appelle une méthode qu'il connaît lui-même, il n'y a rien de tel que l'objet xyz est passé à la méthode. Mais à l'intérieur de cette méthode, xyz sera disponible comme ceci, puisque xyz est l'objet appelé.

méthode (xyz) -> méthode écrite dans une classe qui attend un objet de type XYZ, cette méthode ne fait pas nécessairement partie de la classe XYZ. Ici, xyz est passé en paramètre à la méthode et ne sera pas disponible comme ceci.

1

method(xyz) signifie que vous appelez une méthode qui est définie dans la classe actuelle.

xyz.method() signifie xyz est un objet d'une classe (permet de dire XYZ), dont vous appelez une méthode qui est définie dans XYZ classe.

Cet extrait de code serait plus utile pour vous

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

en premier cas:

xyz est un argument à une méthode.

en second cas:

nous voulons appeler une méthode qui est définie dans la classe XYZ. mais vous ne pouvez pas y accéder directement comme dans le premier cas. Pour accéder à une méthode ou un champ qui est défini dans une autre classe, nous devons créer une instance de cette classe (dans notre cas, xyz) et à travers cette instance nous pouvons accéder à ces méthodes à condition que les méthodes ne soient pas privées.

1

De l'orientation de l'objet, il existe une différence logique. Par exemple, si nous appelons la méthode kill alors xyz.kill() signifie que l'objet xyz se suicide et si nous appelons la méthode kill(xyz) alors quelqu'un tue xyz. Du point de vue technique, il existe une différence logique si la méthode n'est pas statique. Le xyz.method() indique que xyz ne doit pas être null (dans la mesure où la méthode n'est pas statique). Le method(xyz) indique que xyz peut être nul et peut être quelque chose d'autre.

De plus, il n'y a pas de différence logique.