Lokale Java-Klasse

Lokale Klasse

Eine lokale Klasse ist eine Klasse, die innerhalb einer Methode einer bestimmten Klasse definiert ist.

Regel

Zugriffsmodifikator nicht verfügbar (privat, geschützt, öffentlich) statischer Modifikator nicht verfügbar abstrakte und endgültige Modifikatoren können verwendet werden Zugang zu Mitgliedern der äußeren Klasse

Im folgenden Code können Sie sehen, wie auf die Argumente der äußeren Klassenmethode, lokale Variablen, nur mit Konstanten zugegriffen werden kann und automatisch zu Konstanten gemacht werden. Es ist auch ersichtlich, dass auf die Instanzvariablen der äußeren Klasse von der lokalen Klasse aus zugegriffen werden kann, selbst wenn sie keine Konstanten sind.

class OuterA{ //Äußere Klasse
	private static int a = 1;
	private int b =2;
	
	void methodOuter(final int c, int d) {
		final int e =5; int f =6;
		//c=10; //c ist eine Konstante, weil es endgültig ist. Kann nicht neu zugewiesen werden.
		//d=10; //Zu diesem Zeitpunkt ist es keine Konstante und kann ersetzt werden.
		//Dies bestätigt jedoch, dass d eine Variable ist, die Aufrufe von lokalen Klassen verhindert.

        //d++; //Final wird zum Zeitpunkt der Variablendeklaration hinzugefügt. Wenn Sie diese Änderung vornehmen, können Sie nicht von der lokalen Klasse aus aufrufen
		//f++;
		class A{ //Lokale Klasse
			void method() {
				System.out.print(a+" ");
				System.out.print(b+" ");
				System.out.print(c+" ");
				System.out.print(d+" ");
				System.out.print(e+" ");
				System.out.print(f+" \n"); //「\"n" ist ein Zeilenumbruch
				a++;
				b++;
				//c++;
				//d++;
				//e++;
				//f++;
				//c,d,e,f ist eine Konstante, aber a,b ist keine Konstante
				System.out.print(a+" "+b);
			}
		}
		new A().method();
	}
}



public class Test3 {

	public static void main(String[] args) {
		OuterA o = new OuterA();
		o.methodOuter(3,4);
	}
}

Ausgabeergebnis

1 2 3 4 5 6 
2 3 

Punkt

(1) Instanzvariablen können von einer lokalen Klasse aufgerufen werden, auch wenn sie keine Konstanten sind.

(2) Wenn ein Methodenargument und eine lokale Variable aus einer lokalen Klasse aufgerufen werden, muss es eine Konstante sein (mit einem letzten Modifikator). (Wenn nicht beigefügt, wird es implizit angegeben)

(3) Wenn der letzte Modifikator implizit hinzugefügt wird, erfolgt dies zum Zeitpunkt der Deklaration der Variablen, also beim Aufrufen der Variablen aus der lokalen Klasse, bevor die Variable aus der lokalen Klasse aufgerufen wird (unter Verwendung der Variablen in der lokalen Klasse). Wenn ja, weisen Sie den Wert nicht neu zu.

(4) Wenn der Wert nach der Deklaration der Variablen geändert wird (Zuweisung, Inkrement usw.), wird die Variable bestätigt und kann nicht von der lokalen Klasse aufgerufen werden.

Verweise

Michiko Yamamoto "Java Programmer Gold SE8" Shosuisha.

Recommended Posts