2010-11-29 6 views
0

ich sehr, sehr einfach Java-Frage: Für die Klasse unter:Grund Java Frage, Variablentyp und Methodentyp in Java

public class Hello { 
    public final static int a; 
    public final int a; 
    public int a; 
    int a; 

    static public void Method(){} 
    public void Method(){} 
    private void Method(){} 
} 

was ist der Unterschied zwischen der declartion und Verfahren oben oben ??

+0

Ich bin nicht sicher, ich verstehe. Sie haben 1 Klassendeklaration, 4 Variablendeklarationen und 3 Methodendeklarationen. Was ist die Frage? – Pete

+0

ist es eine Hausaufgabe? – Favonius

+0

Auch wenn es eine Art von Hausaufgaben ist, sehe ich das Problem nicht. Er fragt uns, was der Unterschied ist und nicht, dass Code etwas "tun" soll. – Pete

Antwort

2
public final static int a; 

Dies deklariert eine konstante Eigenschaft, die statisch ist. Das bedeutet, dass es an keine Instanz der Hello-Klasse gebunden ist und sowohl außerhalb der Hello-Klasse als auch innerhalb von Hello verfügbar ist. Da es endgültig ist, werden Sie nicht in der Lage sein, diesen Wert zu ändern, und es wird immer der Standardwert 0.

public final int a; 

ähnlich die oben, außer es zu dieser Instanz von Hallo gebunden ist.

Dies ist eine öffentliche Eigenschaft dieser Instanz von Hello, die innerhalb und außerhalb der Hello-Klasse geändert werden kann. Dies wird als schlechte Praxis angesehen.

Eine Standardeigenschaft dieser Instanz von Hello. Nur innerhalb dieser Instanz von Hello änderbar.

Eine statische (nicht an eine Instanz gebundene) Methode innerhalb der Hello-Klasse, auf die sowohl intern als auch extern zugegriffen werden kann. Es hat keinen Zugriff auf Dinge wie:

public final int a; 
public int a; 
int a; 

es nicht diese zugreifen, da diese Methode nicht an diese Instanz gebunden ist, wo, wie alle diese Werte sind.

public void Method() {} 

Eine öffentliche Methode der Hello-Klasse. Es ist sowohl intern als auch extern zugänglich.

private void Method() {} 

ähnlich das Verfahren oben, außer es nur intern zugänglich ist.

+0

+1 für detaillierte Antwort – Favonius

+0

danke, Sie haben meine Verwirrung gelöscht. – Mavin

0

ist Ihre Hausaufgaben Lassen Sie tun:

public final static int a; 

a öffentlich ist, so ist es von überall her zugänglich ist. Es ist endgültig, daher kann der Wert nach der Deklaration nicht geändert werden. Es ist statisch, also gehört es nicht Instanzen der Hello-Klasse, sondern der Klasse selbst.

1

Corey Sunwolds Antwort ist sehr klar. Ich möchte nur ein paar Worte hinzufügen, wenn Sie es noch nicht wissen. Wenn final für Objektreferenz verwendet wird, bedeutet dies, dass Sie sie nicht ändern können, um auf ein anderes Objekt zu verweisen, aber das Objekt selbst ist noch veränderbar. Zum Beispiel

public final static List a = new ArrayList(); 

Die Variable a wird eine Instanz von ArrayList referenzieren. Sie können a nicht auf ein anderes ArrayList Objekt setzen, aber Sie können Element zu a hinzufügen.

final Schlüsselwort in Java bedeutet nicht konstant und entspricht nicht const Schlüsselwort in C++.Es bedeutet wirklich, dass Variablen (primitiv), Referenzen (Objekte), Methoden oder Klassen endgültig sind und nicht weiter modifiziert werden können.

0
public class Hello { 
    public final static int a; 
    public final int a; 
    public int a; 
    int a; 

    static public void Method(){} 
    public void Method(){} 
    private void Method(){} 
} 

Was ist der Unterschied zwischen dem Verfahren, das oben und declartion oben ??
=> Die Deklarationen sind die ersten 4 Zeilen, weil Sie nichts zugewiesen haben. Wenn Sie mit = (ex. Int a = 3) zuweisen, wird es als Zuweisungsanweisung aufgerufen.
Und die letzten drei Zeilen sind Methoden. Sie haben Format: (. Ex void)
Zugriffsmodifikator (. Ex public) Rückgabetyp Methodenname (ex.Method) Parameter (()) Körper ({})


Unterschied zwischen Erklärung und Methode ist:
- Erklärung: Sie deklarieren Sie etwas mit Namen, dass Sie werden Sie, aber Sie haben noch nichts zugewiesen.
- Methode: A Funktion, die den Code innerhalb des Körpers ausführt.

1
public final static int a; 

es gehört zu keiner Instanz und bleibt konstant.

public final int a; 

Es ist konstant und nicht im gesamten Programm/Anwendung kann

public int a; 

Normale Deklaration der Variablen geändert hat, kann an jedem Punkt der Zeit durch die Anwendung/Programm geändert werden.

Wie public int a bleiben die Variablen, die ohne Spezifizierer deklariert wurden, standardmäßig öffentlich. Es wird also keinen Unterschied geben

static public void Method(){} 

Diese Methode gehört keiner Instanz einer Klasse an.

public void Method(){} 

Diese Methode kann von jeder anderen Klasse durch Erweiterung, d. H. Mit Hilfe der Vererbung, aufgerufen werden.

private void Method(){} 

Diese Methode kann nur von der Klasse zugegriffen werden, wo es gehört. Daher kann von keiner anderen Klasse zu irgendeinem Zeitpunkt darauf zugegriffen werden.

Für Mehr über Zugriffsbezeichner click here Für Mehr über Vererbung click here

0

Hier sind zwei Dinge heikel sind, Erstens:

public final static int a; 

Eigentlich ist das statische Variable (nicht auf die Instanz gebunden), dann seine final, so dass sein Mittelwert während des gesamten Programms konstant sein sollte und auch öffentlich, das bedeutet, dass er intern und extern zugänglich ist.

Zweitens:

static public void Method() {} 

Gleiche mit dieser Methode nicht Bindungen an die Instanz und zugänglich intern und extern