Анонимный класс, переобъявляющий атрибутыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Анонимный класс, переобъявляющий атрибуты

Сообщение Anonymous »

Я не понимаю, почему я получаю следующий вывод. Почему, когда я пишу 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»