Задачу решил чисто интуитивно. Подскажите пожалуйста, - что такое (Cat another Cat)? почему нельзя было использовать в параметрах (int a, int b)?
И как пустую переменную класса .this можно сравнивать, если они индивидуальны для каждого объекта? Ничего не понимаю ((
Sergey Seleznyov
15 уровень
Что такое (Cat another Cat)? и как работает this.??
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
24 февраля 2020, 13:14
this - это указатель на объект, у которого вызван метод.
Смотри. Ты когда пишешь какой-то метод, для чего ты это делаешь? Для того, чтобы вызвать его у какого-то объекта. У какого объекта можно вызвать метод? У объекта, который относится к тому классу, в котором он написан. Я сейчас говорю про нестатические методы, если что, метод fight как раз не статический. Получается, что раз метод fight у нас написан в классе Cat, то и вызвать этот метод можно у объекта класса Cat. Как это сделать? Создать кота и вызвать у него этот метод. Примерно так:
Только вот такой пример не сработает. Потому что у тебя в заголовке метода fight написано "... fight(Cat anotherCat)". Это означает, что, чтобы вызвать метод у объекта, в качестве параметра нужно передать еще один объект класса Cat. Поскольку самому с собой бои проводить довольно странно, придется создать еще одного кота, например
и тогда уже можно вызвать метод
Можешь поупражняться и создать самостоятельно 5 котов, заполнить им характеристики и провести бой между каждыми двумя.
Вернемся к твоим вопросам.
Метод fight не говорит о том, как пройдет бой между какими-то конкретными двумя котами. Он говорит о том, как пройдет бой между двумя любыми котами, а если сформулировать еще точнее, то как пройдет бой указанного кота против второго, переданного в аргументах. И вот для того, чтобы изнутри метода можно было сослаться на объект, у которого вызывается этот метод, служит ключевое слово this.
Если метод вызван у "васьки", то this будет ссылаться на "ваську", если у "кузи", то на "кузю". А anotherCat - это аргумент метода, и свое значение он получит из параметра вызова, указанного в скобках. +2
hidden #2020490
24 февраля 2020, 13:21
kuzya.fight(vaska);
внутри fight {
if (this.age > anotherCat.age)
/// kuzya.age > vaska.age
}
0