-8

怎么打电话?怎么做?

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)如何称呼“黑”?

4

2 回答 2

0

对于 1_

您在这里拥有的是子类型多态性。Youu 传入 Animal 的子类

对于 2_ 和 3_

你需要将一些东西传递给他的方法。你可以传入一个对象。例如

System.out.println(dog.getColour());

这假设您getColour的对象中有一个方法。你没有提供你对动物的定义,所以我只能假设这个

于 2012-12-03T09:18:49.207 回答
0

(1) 这是什么意思?

该方法f正在使用instanceof,因为它不使用多态方法来选择正确的类型。

你能更具体地了解你不明白的地方。

(2)“黄”怎么称呼?

我假设您想要的是检索String字段中的字段,dog就像dog.fieldNameNotShownInYourExample获取a.name名称一样。

(3) 怎么称呼“黑”?

我认为它应该是"black"但它与2相同)

于 2012-12-03T09:19:14.167 回答