Вопросы о новичках в 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 метод в вашем объекте. Вы не предоставляете свое определение животных, поэтому я могу только предположить, что

Другие вопросы по тегам