Подскажите, пожалуйста, почему вызывается метод toString автоматически при System.out.println(duck1); ?. Это же не конструктор, а метод. Я даже не написал System.out.println(duck1.toString()); , а он всё равно сработал.
public static void main(String[] args) {
Duck duck1 = new Duck();
Duck duck2 = new Duck();
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Cat cat1 = new Cat();
Cat cat2 = new Cat();
System.out.println(duck1);
System.out.println(duck2);
System.out.println(dog1);
System.out.println(dog2);
System.out.println(cat1);
System.out.println(cat2);
//напишите тут ваш код
}
public static class Duck {
public String toString() {
return "Duck";
}
}
//напишите тут ваш код
public static class Cat {
public String toString() {
return "Cat";
}
}
public static class Dog {
public String toString() {
return "Dog";
}
}
}
Евгений
15 уровень
Подскажите, пожалуйста, почему вызывается метод toString автоматически System.out.println(duck1);. Это же не конструктор, а метод.
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
12 сентября 2020, 09:56
"почему вызывается метод toString". Просто потому, что для вывода надо сначала выводимый объект преобразовать в строку.
Приведу в пример аналогию - принтер не умеет печатать число 456. Что бы принтер напечатал "456", на принтер надо отправить строку, состоящую из символов 4, 5 и 6. То-есть число надо сначала преобразовать в строку из символов.
Так же и здесь.
Кстати, обратная операция, ввод, тоже всегда через строку работает. Строка считывается и парсится в тот формат, который мы будем использовать.
+2
ЕвгенийВедущий специалист по под в ООО "Амвэй"
12 сентября 2020, 17:58
То есть если взять метод toString(), переопределить его и добавить в него свой код, но этот код будет срабатывать каждый раз при System.out.println(""); ?
0
ЕвгенийВедущий специалист по под в ООО "Амвэй"
12 сентября 2020, 17:59
Спасибо за ответ!
0
ГоффMaster
12 сентября 2020, 18:56
да! Скажи, круто?
+3