Я не понимаю, почему я получаю следующий вывод. Почему, когда я пишу myAnimal.x, я получаю другое значение от printx(). Разве к объекту myAnimal не должно быть прикреплено только одно поле x?
Я получаю следующий результат:
Гав-гав
3
5
3
-----------
20
5
Я ожидал, что и myAnimal.x, и printx() напечатают 5
// Normal class
class Animal {
public void makeSound() {
System.out.println("Animal sound");
}
public int x = 3;
public void printx() {System.out.println("printing x from class animal"); }
}
public class Main {
public static void main(String[] args) {
// Anonymous class that overrides makeSound()
Animal myAnimal = new Animal() {
public void makeSound() {
System.out.println("Woof woof");
}
public int x = 5;
public void printx() {System.out.println(this.x);}
};
myAnimal.makeSound();
System.out.println(myAnimal.x);
myAnimal.printx();
System.out.println(myAnimal.x);
System.out.println("-----------");
myAnimal.x = 20;
System.out.println(myAnimal.x);
myAnimal.printx();
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... attributes