Помогите разобраться с наследованием

128
13 августа 2019, 21:00

Не понимаю принцип работы upcast.

class Bird
{
    int age = 2;
    public void move() {
        System.out.println("Any ways");
    }
}
class Strauss extends Bird 
{
    int age=3;
    public void move() {
        System.out.println("Run "+age);
    }
}
public class Main {
    public static void main(String args[]) {
        Bird s = new Strauss();
        s.move();//Run 3
        System.out.println(s.age)//2
    }
}

Собственно, вопрос. Почему s.age = 2 (Берет от Bird), но если использовать эту переменную в методе move() класса Strauss, то она подтягивает age от Strauss и в итоге получается "Run 3".

Как-то глупо вопрос задал. В общем, если вызывать age напрямую - то "2", если через метод - то "3". Почему так?

Answer 1

Наследование распространяется на методы, но не членов класса - у вас по сути два члена класса Bird.age и Strauss.age, которые перекрывают друг друга. Если бы вы сделали так:

class Bird
{
    public int age = 2; //по хорошему надо protected
    public void move() {
        System.out.println("Any ways");
    }
}
class Strauss extends Bird 
{
    public void move() {
        System.out.println("Run "+age);
    }
}

то ответ в обоих случаях был бы один и тот же.

READ ALSO
Убрать переключение на следующий EditText

Убрать переключение на следующий EditText

У меня есть 2 элемента EditText и 2 обработчика на нажатие Enter для них на клавеПример обработчика вот:

107
Не импортируется группа по умолчанию из Active Directory

Не импортируется группа по умолчанию из Active Directory

Разрабатываю приложение, которое импортирует из Active Directory пользователей и их группыБаза: CN=ivan ivanov,CN=Users,DC=perimetrix,DC=ru, Фильтр: (&(objectCategory=user)(objectClass=user)(userPrincipalName=*))

105
javascript как добавить клаcc?

javascript как добавить клаcc?

Помогите изменить добавить класс на checked

105
Найти элементы в строке и преобразовать их в теги

Найти элементы в строке и преобразовать их в теги

есть строка в которой есть ссылки и хештегиНужно обернуть эти ссылки в тег <a href=""></a> как и хештеги

129