JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Если создаю конструктор с одним родителем(для мамы-кошки,...
Юлия
8 уровень
  • 15.04.2020
  • 487просмотров
  • 11комментариев

Если создаю конструктор с одним родителем(для мамы-кошки, затем для папы-кота) ,ругается на то,что такой конструктор уже обЪявлен

Вопрос по задаче Нужно добавить в программу новую функциональность
Java Syntax,  6 уровень,  11 лекция
Обсуждается


Задача: У каждой кошки есть имя и кошка-мама.
Создать класс, который бы описывал данную ситуацию.
Создать два объекта: кошку-дочь и кошку-маму.
Вывести их на экран.

Новая задача: У каждой кошки есть имя, кот-папа и кошка-мама.
Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: дедушку (папин папа), бабушку (мамина мама), папу, маму, сына, дочь.
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
The cat's name is дедушка Вася, no mother, no father
The cat's name is бабушка Мурка, no mother, no father
The cat's name is папа Котофей, no mother, father is дедушка Вася
The cat's name is мама Василиса, mother is бабушка Мурка, no father
The cat's name is сын Мурчик, mother is мама Василиса, father is папа Котофей
The cat's name is дочь Пушинка, mother is мама Василиса, father is папа Котофей

Требования:
  • Программа должна считывать имена 6 котов в указанном порядке.
  • Метод main должен создавать 6 объектов типа Cat.
  • Программа должна выводить 6 строк с информацией о котах.
  • Строка про дедушку (первая) должна соответствовать условию.
  • Строка про бабушку (вторая) должна соответствовать условию.
  • Строка про папу (третья) должна соответствовать условию.
  • Строка про маму (четвертая) должна соответствовать условию.
  • Строка про сына (пятая) должна соответствовать условию.
  • Строка про дочь (шестая) должна соответствовать условию.
....
package com.javarush.task.task06.task0621; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* Родственные связи кошек */ public class Solution { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String granfatherName = reader.readLine(); Cat catGranfather = new Cat(granfatherName); String granmotherName = reader.readLine(); Cat catGranmother = new Cat(granmotherName); String fatherName = reader.readLine(); Cat catFather = new Cat(fatherName, catGranmother); String motherName = reader.readLine(); Cat catMother = new Cat(motherName, catGranfather); 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(catGranfather); System.out.println(catGranmother); 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 catMother; private Cat catFather; Cat(String name) { this.name = name; } Cat(String name, Cat catMother){ this.name = name; this.catMother = catMother; } Cat(String name, Cat catMother, Cat catFather ) { this.name = name; this.catMother = catMother; this.catFather = catFather; } @Override public String toString() { if ((catMother == null)&&(catFather==null)) return "The cat's name is " + name + ", no mother "+"no father"; else if (catMother == null) return "The cat's name is " + name + ", no mother " + ", father is " + catFather.name; else if (catFather == null) return "The cat's name is " + name + ", mother is " + catMother.name + ", no father "; else return "The cat's name is " + name + ", mother is " + catMother.name + ", father is " + catFather.name; } } }
+1
Комментарии (11)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Oleg
Уровень 41
15 апреля 2020, 06:51
Правильно ругается. И мама и папа у вас имеют тип Cat, соответственно вы пытаетесь создать 2 конструктора с одинаковым количеством одинакого типа аргументов. Имена аргументов не имеют значения, для конструетора Cat mather = Cat father или как назовете. Чтобы получились разные конструкторы должны быть разными типы аргументов или количество аргументов или и то и другое. Можно создать конструктор,например Cat parent и использовать его и там и там
0
Ksenia VolkovaJava Developer в DXCMaster
15 апреля 2020, 06:55
Если создать Cat parent, то это как можно будет понять, мама это или папа? )) Есть конструктор с именем, мамой и папой. Вместо отсутствующего родителя ставится null.
0
Oleg
Уровень 41
15 апреля 2020, 10:06
Можно и так, даже ваш вариант более правильный. На том уровне обучения это слишком круто)
0
Ksenia VolkovaJava Developer в DXCMaster
15 апреля 2020, 10:17
"Мой" вариант тут как раз и предполагается к использованию, ничего сложного в нем нет. Твой вариант не то чтобы менее правильный, а просто непонятно, как он должен выглядеть...
Cat(String name, Cat parent){
    this.name = name;
    this.???= parent ;
}
0
Oleg
Уровень 41
15 апреля 2020, 10:42
this.parent = parent; В таком случае нет необходимости уточнять в названии переменной кто папа, мама, бабушка и тд.. Я и не спорю. Полностью согласен с вашим вариантом, Ксения. Насколько я понял ТС пыталась создать 2 конструктора: 1 public Cat(Cat father) 2 public Cat(Cat mather)
0
Ksenia VolkovaJava Developer в DXCMaster
15 апреля 2020, 11:44
this.parent = parent;
Если так, то задачу выполнить не получится, потому что там должны быть и мама, и папа. )
0
Oleg
Уровень 41
15 апреля 2020, 11:55
У меня получилось) просто при создании объекта дочь или сын в конструктор передается мама или папа: Cat catDaughter = new Cat(nameDaughter, catMother); Ксения, не найду где написать лс, могу скинуть свой вариант решения. Может быть действительно я что-то не понимаю и обманул валидатор..
0
Ksenia VolkovaJava Developer в DXCMaster
15 апреля 2020, 11:59
А потом надо вывести строку типа The cat's name is дочь Пушинка, mother is мама Василиса, father is папа Котофей Кто будет папой?
0
Oleg
Уровень 41
15 апреля 2020, 12:03
Хорошо,для дочери будет вызов new Cat(name, mother, father); А в самом конструкторе: this.name = name; this.parent = mother; this parent2 = father; Да, с одним родителем конструктор для котов мам и пап, там же не надо 2х родителей. Ну в моем варианте просто один лишний конструктор. Безусловно ваш вариант совершеннее.
0
Ksenia VolkovaJava Developer в DXCMaster
15 апреля 2020, 12:10
Да, у мамы с папой по одному родителю, но у одного из них родитель - мама, а у другого - папа. Как получить вывод The cat's name is папа Котофей, no mother, father is дедушка Вася The cat's name is мама Василиса, mother is бабушка Мурка, no father если у обоих родитель - просто parent? Я не к тому, чей вариант совершеннее, я в принципе хочу понять, как твой вариант работает.
0
Oleg
Уровень 41
15 апреля 2020, 12:19
Код задачи не дает опубликовать,тк задача решена. Посмотрел свой код, там в методе toString() есть условие о наличии родителей, а при печати мам и пап явно прописаны строки из метода toString(), остальные как положено. Костыль, но работает)
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush