2012-12-03 129 views
-8

如何调用?怎么做?关于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)如何调用“黑色”?

+8

它是一个功课? –

+0

这是OOP理论,不是一个实际的编程问题。请阅读[继承](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html)。或者你可以阅读其他地方的继承 – andreih

+0

@ user1870638谢谢提供。 – aca

回答

0

(1)这是什么意思?

因为它不使用多态的方法来选择合适的类型f使用instanceof的方法。

你能更具体地了解你不明白的东西吗?

(2)如何调用“黄色”?

我假设你想要的是与dog.fieldNameNotShownInYourExample检索领域的Stringdog因为它在a.name做得到的名称。

(3)如何致电“balck”?

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

0

对于1_

你这里是什么subtype多态性。 Youu逝去的动物

的子类,例如2_8和3_

你将需要传递的东西在自己的方法。你可以传入一个对象。例如,

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

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

+0

目前还不清楚类型是否有获取者。如果它们存在,应该使用它们,但是'a.name'表明它们不存在。 –