Dies ist eine Übung zum Verständnis der Funktionsweise von inneren Klassen in Java. Wie die Frage besagt, wie viele verschiedene Versionen von x
in (*)
zugänglich sind?Wie viele verschiedene Versionen von 'x' sind in (*) verfügbar?
class Outer {
int x;
class Inner extends Outer {
int x;
void f(int x) {
(*)
}
}
}
ich geneigt bin zu glauben, dass es 3, nämlich: this.x
, super.x
und x
aber einige meiner Kollegen scheinen zu denken, dass es 4.
Wer von uns ist verwirrt? Und kannst du es erklären?
Bleaaah, was für ein Durcheinander von Code. Aber ich lehne mich Richtung 4 ab und unterscheide "Outer.this.x" von "super.x", weil du "Outer" sowohl als Supertyp als auch als umschließenden Typ hast, und diese sind verschieden. –
Korrigieren.Mit "Äußerer a = neuer Äußerer(); Inneres b = a.new Inneres(); da sind 4 von ihnen. –
einige weitere syntaktische Formen - 'Inner.super.x',' ((Äußere) this) .x' – ZhongYu