По условию задачи мы в цикле создаём много объектов cat типа Cat, в которые передаём разные параметры.
Правильно ли я понимаю, что у нас постоянно "перезаписывается" переменная типа cat?
Как тогда мы сможем потом обратиться ко всем этим котам, если мы не сохраняем их никуда?
P.S. Задачу я уже решила, не понятен именно этот момент: у нас одна переменная cat для всех значений, которые пользователь введет с клавиатуры. Как5 потом работать с такой программой, если мы захотим обращаться к этим котам и реализовать их взаимодействие?
package com.javarush.task.task14.task1404;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
Коты
*/
public class Solution {
public static void main(String[] args) throws Exception {
//напишите тут ваш код
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextLine()) {
String nameOfCat = scanner.nextLine();
while(!nameOfCat.equals("")) {
Cat cat = CatFactory.getCatByKey(nameOfCat);
cat.toString();
}
}
}
static class CatFactory {
static Cat getCatByKey(String key) {
Cat cat;
switch (key) {
case "vaska":
cat = new MaleCat("Василий");
break;
case "murka":
cat = new FemaleCat("Мурочка");
break;
case "kiska":
cat = new FemaleCat("Кисюлька");
break;
default:
cat = new Cat(key);
break;
}
return cat;
}
}
static class Cat {
private String name;
protected Cat(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String toString() {
return "Я уличный кот " + getName();
}
}
static class MaleCat extends Cat {
MaleCat(String name) {
super(name);
}
public String toString() {
return "Я - солидный кошак по имени " + getName();
}
}
static class FemaleCat extends Cat {
FemaleCat(String name) {
super(name);
}
public String toString() {
return "Я - милая кошечка по имени " + getName();
}
}
}