Доброго и позитивного времени суток, года и вообще. Коллеги, кто-нибудь может объяснить что переопределяет метод toString в этой задаче, и зачем тут override, ибо данные в литературе мой мозг не улавливает. Заранее благодарен.
Павел
7 уровень
Доброго и позитивного времени суток, года и вообще. Коллеги, кто-нибудь может объяснить что переопределяет метод toString в этой задаче, и зачем тут override, ибо данные в литературе мой мозг не улавливает. Заранее благодарен.
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Pavlo Plynko Java-разработчик в CodeGym Expert
30 апреля 2018, 13:43
1. В этой задаче метод toString() переопределяет метод toString() класса Object.
2. @Override не обязателен, без него будет работать точно так же.
0
Павел
30 апреля 2018, 17:32
Спасибо)
0
Jola
27 апреля 2018, 21:23
метод toString() это метод любого объекта (Object class) служить для вывода информации об объекте, также полезный при отладке программы.
Если взглянуть в документацию на основную реализацию метода toString ():
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Для общего понимания запустите этот код, а потом закомментируйте метод toString(), запустите снова и посмотрите, что получится. Из этого вывода сложно получить какую либо информацию об объекте.
public class Test {
public static void main(String[] args) throws IOException {
Cat cat1 = new Cat("one");
Cat cat2 = new Cat("two");
Cat cat3 = new Cat("three", cat1, cat2 );
System.out.println(cat1);
System.out.println(cat2);
System.out.println(cat3);
}
public static class Cat {
private String name;
private Cat father;
private Cat mother;
Cat(String name)
{
this.name = name;
}
Cat(String name, Cat mother, Cat father)
{
this.name = name;
this.father = father;
this.mother = mother;
}
@Override
public String toString() {
return "Cat [name=" + name + ", father=" + father + ", mother=" + mother + "]";
}
}
}
0
Павел
27 апреля 2018, 21:37
Благодарю))))
0
Глеб
27 апреля 2018, 20:01
на сколько я понимаю, аннотация override говорит о том что вы переопределяете метод toString, ведь изначально он предназначен для преобразования, числа в строку, а мы в данной задаче просто выводим данные, +. вроде как, если поставить override, то никакого воздействия это на переопределение не окажет, но если не переопределишь, то компилятор может отругать тебя.
0
Павел
27 апреля 2018, 21:39
Спасибо)
0
Ярослав Java Developer Master
27 апреля 2018, 19:58
Можешь ли ты, пожалуйста, добавить код? :)
0
Павел
27 апреля 2018, 20:10
синтаксис не исправляй, задача сделана у меня, я просто суть оверрайд понять хочу
метод main() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))
String grandpaName = reader.readLine()
Cat catGrandpa = new Cat(grandpaName)
String grandmaName = reader.readLine()
Cat catGrandma = new Cat(grandmaName)
String fatherName = reader.readLine()
Cat catFather = new Cat(fatherName, null, catGrandpa );
String motherName = reader.readLine()
Cat catMother = new Cat(motherName, catGrandma, null)
String sonName = reader.readLine()
Cat catSon = new Cat(sonName, catMother, catFather);
String daughterName = reader.readLine()
Cat catDaughter = new Cat(daughterName, catMother, catFather)
System.out.println(catGrandpa) /выводит поочередно кошек
System.out.println(catGrandma)
System.out.println(catFather)
System.out.println(catMother)
System.out.println(catSon)
System.out.println(catDaughter)
}
public static class Cat {
private String name
private Cat father
private Cat mother
Cat(String name)
{
this.name = name
}
Cat(String name, Cat mother, Cat father
{this.name = name;
this.father = father
this.mother = mother
}
@Override
public String toString()
{
if (mother = null & father = null)
{
return "Cat name is " + name + "no mother, no father";
}
else if (mother == null & father != null)
{
return "Cat name is " + name + "no mo else if (mother != null && father == null)
{
return "Cat name is " + name + "mother is " + mother.name + "no father";
}
else
{
0