怎么打电话?怎么办?
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)如何打电话"黑"?
答案 0 :(得分:0)
For 1 _
这里有subtype多态性。 Youu正在传递Animal的子类
2_和3 _
您需要将某些内容传递给他的方法。您可以传入一个对象。例如
System.out.println(dog.getColour());
这假设您的对象中有getColour
方法。你不提供Animal的定义,所以我只能假设这个
答案 1 :(得分:0)
(1)这是什么意思?
方法f
正在使用instanceof
,因为它不使用多态方法来选择正确的类型。
您能否更具体地了解您不理解的内容。
(2)如何称呼“黄色”?
我认为你想要的是String
中的dog
字段中的dog.fieldNameNotShownInYourExample
与a.name
中"black"
一样,以获取名称。
(3)如何称呼“黑人”?
我认为它应该是{{1}},但它与2)相同