Gespiegelte Klassen oder Variablen in Java

Shadowing bezieht sich auf die Praxis in der Java-Programmierung von zwei Variablen mit dem gleichen Namen in Bereichen verwenden, die sich überlappen. Wenn Sie das tun, wird die Variable mit dem übergeordneten Rahmen verborgen ist, da die Variable mit niedrigerer Ebene Umfang außer Kraft gesetzt. Die übergeordnete Variable ist dann # 147-beschattet.# 148;

Sie canaccess eine gespiegelte Klasse oder Instanz-Variable, indem sie es voll qualifizierenden - das heißt, indem Sie den Namen der Klasse, vorausgesetzt, es enthält.

Betrachten wir zum Beispiel das Programm:

public class ShadowApp {static int x-public static void main (String [] args) {x = 5-System.out.println ( "x =" + x) -int xx = 10 System.out.println ( "x = "+ x) -System.out.println (" ShadowApp.x = "+ ShadowApp.x) -}}

Hier ist die Ausgabe:

x = 5 x = 10x = 10ShadowApp.x = 5

Hier ist die erste System.out.println Anweisung gibt den Wert der Klassenvariable x. Dann wird die Klassenvariable x wird durch die lokale Variable abgeschattet x, deren Wert von der zweiten gedruckten System.out.println Erklärung. Schließlich die dritte System.out.println Anweisung druckt die beschatteten Klassenvariable durch seine vollständig qualifizierten Namen Bereitstellung (ShadowApp.x).

Der Gültigkeitsbereich einer lokalen Variablen, die ein Schatten Klasse Variable nicht unbedingt an der gleichen Stelle beginnen, die die lokale Variable Umfang beginnt. Die Beschattung beginnt, wenn die lokale Variable deklariert wird, aber die lokale Variable des Oszilloskops nicht beginnt, bis die Variable initialisiert wird. Wenn Sie die Variable zwischen der Deklaration und der Initialisierung zuzugreifen versuchen, zeigt das Java-Compiler eine Fehlermeldung.

Da Abschattung eine häufige Quelle von Fehlern ist, wollen Sie mit ihr so ​​viel wie möglich zu vermeiden.

Menü