Применяется ли полиморфизм к атрибутам класса в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Применяется ли полиморфизм к атрибутам класса в Java?

Сообщение Anonymous »

Я знаю, что обычное использование полиморфизма в ООП происходит, когда ссылка родительского класса используется для ссылки на объект дочернего класса, например:

Код: Выделить всё

Animal animal = new Animal();
Animal dog = new Dog();
И я знаю, что полиморфизм применяется к методам класса, но применяется ли он также к атрибуту класса? Я попытался проверить это на этом небольшом примере:

Код: Выделить всё

public class Main{

public static void main(String args[]){
Animal animal = new Animal();
Animal dog1 = new Dog();
Dog dog2 = new Dog();

System.out.println("Animal object name: " + animal.name);
System.out.println("Dog1 object name: "+dog1.name);
System.out.println("Dog2 object name: " + dog2.name);

animal.print();
dog1.print();
dog2.print();
}

}
class Animal{
String name = "Animal";
public void print(){
System.out.println("I am an: "+name);
}
}
class Dog extends Animal{
String name = "Dog";
public void print(){
System.out.println("I am a: "+name);
}
}
И вот результат:

Код: Выделить всё

Animal object name: Animal
Dog1 object name: Animal
Dog2 object name: Dog
I am an: Animal
I am a: Dog
I am a: Dog
Как видите (надеюсь, это понятно), полиморфизм отлично работает с методом print(), но с атрибутом класса «name ", это зависит от ссылочной переменной.

Итак, я прав? полиморфизм не применяется к атрибутам класса?

Подробнее здесь: https://stackoverflow.com/questions/322 ... es-in-java
Ответить

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

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

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

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

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