我刚从书头开始学习面向对象编程,首先是java。它说多态使我能够创建超类类型的数组,然后将所有子类作为数组元素。但是当我尝试使用相同的代码编写代码时原则它遇到错误,说 error: cannot find symbol 我将超类设为动物的类,而狗类扩展了具有自己的 fetch 方法的动物类,但是当我将狗变量引用为动物时,它在这里不起作用是代码
动物类:
public class animal{
String family;
String name;
public void eat() {
System.out.println("Ghap Ghap");
}
public void roam() {
System.out.println("paw paw");
}
}
狗类:
public class dog extends animal {
public void fetch() {
System.out.println("Auoooooooo");
}
}
测试者类:
public class tester {
public static void main(String args[]){
animal doggie = new dog();
doggie.fetch();
doggie.eat();
doggie.roam();
}
}
错误:
tester.java:4: error: cannot find symbol
doggie.fetch();
^
symbol: method fetch()
location: variable doggie of type animal
1 error
编辑:上次我问这个问题时,我回家时认为该对象doggie属于该类型animal,并且它不知道fetch()已在dog类中声明的函数。但是添加行
System.out.println(doggie.getClass().getName());
给出dog作为类的类型,如果dog确实是类的类型,它不应该知道其中声明的方法吗?
呼啦一阵风
MMMHUHU
萧十郎
相关分类