2017-07-04 4 views
-2

Obwohl Javascript nicht wie Java ist, was ist das Äquivalent einer JavaScript-Funktion Schließung in Java? Und warum brauchen wir Schließungen?Was ist das Äquivalent der JavaScript-Funktion Schließung in Java?

Dies ist mein Verständnis 1. Private und geschützte Variablen in Java werden von allen Methoden in dieser Klasse zugegriffen. 2. Gibt es eine Möglichkeit, eine private Variable zu inkrementieren, die Zugriff auf nur eine Methode in einer Klasse in Java gibt? 3. Wenn die Antwort auf Punkt 2 NEIN ist, warum wird dann eine solche Anforderung durch JavaScript-Verschlüsse erfüllt? 4. Wo können wir uns einer solchen Anforderung wie in Punkt 2 stellen?

+0

Können Sie ein Beispiel von Ihnen mit "js function closure" meinen? – azro

+0

Instanzvariablen und Methoden sind grundsätzlich unsere Alternative zu Schließungen. Ich mag sie viel mehr, weil Sie die Anzahl der Variablen begrenzen können, die die Methode sieht. – byxor

+0

Ich fragte, warum brauchen wir eine Schließung? Und gibt es eine Entsprechung in Java? –

Antwort

0

In Java brauchen Sie keine "Schließung". Alles, was Sie in einer Funktion haben, ist nur für diese Funktion, sollten Sie versuchen, nicht für alles statisch zu verwenden.

Java ist OO, auf eine Variable in einem Objekt kann von allen Methoden aus diesem Objekt zugegriffen werden. Wenn Sie keinen anderen Objektzugriff darauf wünschen, verwenden Sie den Tag "private".

//Class 
public class HelloWorld(){ 
    private int var1; 
    public String var2; 

    // Constructor 
    public HelloWorld(){ 
    } 

    public void function1(){ 
    //here you can use var1 and var2. 
    } 

    private void function2(){ 
    //here you can use var1 and var2. 
    } 

    // If you have a parameter with same name, you should use this 
    private void function3(int var1){ 
    // this.var1 object variable 
    // var1 method variable 
    } 
} 

//From another object: 
public class ByeWorld(){ 

    private HelloWorld anInstanceOfHelloWorld; 

    public ByeWorld(){ 
    anInstanceOfHelloWorld = new HelloWorld(); 

    // var2 is public you can use it (NO RECOMENDABLE) 
    anInstanceOfHelloWorld.var2; 
    anInstanceOfHelloWorld.function1(); 

    // YOU CANT 
    // anInstanceOfHelloWorld.var1 // is private 
    // anInstanceOfHelloWorld.function2() // is private 
    //... 
    } 
} 

Ich hoffe, dass dir das etwas hilft.

Verwandte Themen