Σε προηγούμενο παράδειγμα είδαμε την προσβασιμότητα στα πεδία και τις μεθόδους της εξωτερικής κλάσης. Τι γίνεται όμως όταν μία μέθοδος καλεί μία άλλη μέθοδο η οποία υπάρχει τόσο στη εσωτερική όσο και στην εξωτερική κλάση. Αντίστοιχα, τι γίνεται όταν μία μέθοδος καλεί ένα πεδίο το οποίο υπάρχει στην εσωτερική και την εξωτερική κλάση; Το παρακάτω παράδειγμα απαντά στα παραπάνω ερωτήματα:
public class ShadowTest { public int x = 100; class FirstLevel { public int x = 200; String toString(int x) { return "x = " + x + "\nthis.x = " + this.x + "\nShadowTest.this.x = " + ShadowTest.this.x; } public String toString() { return "X in FirstLevel is "+x+" and "+ShadowTest.this;} } public String toString() { return "X in ShadowTest is "+x; } public static void main(String args[]) { ShadowTest st = new ShadowTest(); ShadowTest.FirstLevel fl = st.new FirstLevel(); System.out.println(fl.toString(23)); System.out.println(st); System.out.println(fl); } }
Το αποτέλεσμα εκτέλεσης του παραπάνω προγράμματος δίνεται παρακάτω:
x = 23 this.x = 200 ShadowTest.this.x = 100 X in ShadowTest is 100 X in FirstLevel is 200 and X in ShadowTest is 100
Προηγούμενο : Πρόσβαση από τρίτες κλάσεις στην εσωτερική κλάση | Περιεχόμενα | Επόμενο: Τοπικές κλάσεις |