Не понимаю принцип работы 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"
. Почему так?
Наследование распространяется на методы, но не членов класса - у вас по сути два члена класса 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);
}
}
то ответ в обоих случаях был бы один и тот же.
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть 2 элемента EditText и 2 обработчика на нажатие Enter для них на клавеПример обработчика вот:
Разрабатываю приложение, которое импортирует из Active Directory пользователей и их группыБаза: CN=ivan ivanov,CN=Users,DC=perimetrix,DC=ru, Фильтр: (&(objectCategory=user)(objectClass=user)(userPrincipalName=*))
есть строка в которой есть ссылки и хештегиНужно обернуть эти ссылки в тег <a href=""></a> как и хештеги