Вопросы о новичках в Java
Как позвонить? Как сделать?
public class Test {
public static void main(String[] args) {
Test test = new Test();
Animal a = new Animal("Animal");
Dog d = new Dog(" BigDog ","yellow");
Cat c = new Cat(" SmallCat ","black");
test.f(a); test.f(d); test.f(c); //(1)
}
public void f(Animal a) {
System.out.println("name :"+ a.name);
if(a instanceof Dog) {
Dog dog = (Dog)a;
System.out.println(" "+ fursColor + "fur"); //!(2)!Error
}
else if(a instanceof Cat) {
Cat cat = (Cat)a;
System.out.println(" " + eyesColor + "eye"); //(3)!Error
}
}
}
Задать вопрос:
(1) Что это значит?
(2) Как назвать "желтый"?
(3) Как назвать "черный"?
2 ответа
(1) Что это значит?
Метод f
использует instanceof
как это не использовать полиморфные методы, чтобы выбрать правильный тип.
Можете ли вы быть более конкретным относительно того, что вы не понимаете.
(2) Как назвать "желтый"?
Я полагаю, вы хотите, чтобы получить String
в поле в dog
с dog.fieldNameNotShownInYourExample
как это было в a.name
чтобы получить имя.
(3) Как назвать "Бальк"?
Я полагаю, это должно быть "black"
но это так же, как 2)
За 1_
То, что у вас здесь есть, это полиморфизм подтипа. Вы проходите в подклассы животных
Для 2_ и 3_
Вам нужно будет передать что-то в его метод. Вы можете передать объект. Например
System.out.println(dog.getColour());
Это предполагает, что у вас есть getColour
метод в вашем объекте. Вы не предоставляете свое определение животных, поэтому я могу только предположить, что