我有3个类文件,当我编译扩展另一个类的类时会产生编译错误,如找不到符号。
public class Animal {
public static void hide() {
System.out.println("Hide Method Of Animal");
}
public void override() {
System.out.println("The Override method of Animal");
}
}
public class Cat extends Animal {
public static void hide() {
System.out.println("Hide Method Of Cat");
}
public void override() {
System.out.println("The Override method of Animal");
}
}
public class TestAnimal {
public static void main(String args[]) {
Cat myCat = new Cat();
Animal myAnimal = (Animal)myCat;
myAnimal.hide();
myAnimal.override();
}
}
我收到此错误:
TestAnimal.java:6: cannot find symbol
symbol : class Cat
location: class com.Test.TestAnimal
Cat myCat = new Cat();
^
对此有任何帮助???
答案 0 :(得分:4)
是的,请在编译后查看每个.java文件是否有.class文件。如果没有,请确保每个文件都有.class文件。
运行时,使用-classpath参数指向所有.class文件所在的目录。
你听起来好像可以在编译和运行Java时使用一些指令。
http://www.horstmann.com/bigj/help/compiler/tutorial.html
这是勺子喂食答案:
答案 1 :(得分:4)
您的代码绝对没有问题。这就是我所做的。看看你是否做得对:
$ cat > Animal.java
public class Animal
{
public static void hide()
{
System.out.println("Hide Method Of Animal");
}
public void override()
{
System.out.println("The Override method of Animal");
}
}
$ cat > Cat.java
public class Cat extends Animal
{
public static void hide()
{
System.out.println("Hide Method Of Cat");
}
public void override()
{
System.out.println("The Override method of Animal");
}
}
$ cat > TestAnimal.java
public class TestAnimal
{
public static void main(String args[])
{
Cat myCat = new Cat();
Animal myAnimal = (Animal)myCat;
myAnimal.hide();
myAnimal.override();
}
}
$ javac TestAnimal.java
$ ls
Animal.class Animal.java Cat.class Cat.java TestAnimal.class TestAnimal.java
$ java TestAnimal
Hide Method Of Animal
The Override method of Animal
我可以看到,我使用了复制粘贴来获取代码。请注意,在编译之后,除了.class
文件外,还有三个.java
个文件。