Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在同一个包中的类上使用扩展?_Java_Package_Extends - Fatal编程技术网

Java 如何在同一个包中的类上使用扩展?

Java 如何在同一个包中的类上使用扩展?,java,package,extends,Java,Package,Extends,路径“/utilities/pets/”中有两个.java文件: /实用程序/pets/Animal.java /实用程序/pets/Cat.java 以及路径顶部的Test.java文件 在my Animal.java文件中,有以下代码: package utilities.pets; public class Animal implements Cloneable { //bunch of private attributes and public constructors and s

路径“/utilities/pets/”中有两个.java文件:

/实用程序/pets/Animal.java

/实用程序/pets/Cat.java

以及路径顶部的Test.java文件

在my Animal.java文件中,有以下代码:

package utilities.pets;

public class Animal implements Cloneable {
  //bunch of private attributes and public constructors and setters-getters
}
从Test.java中,我可以导入Animal类并创建动物实例,没有任何问题,直到这里都很好

现在我想让我的Cat.java成为一个继承自Animal的类,但如果我在Cat.java中键入以下代码:

package utilities.pets;

public class Cat extends Animal {

}
编译器告诉我它找不到符号动物 如果我尝试这个,也会发生同样的情况

package utilities.pets;

public class Cat extends utilities.pets.Animal {

}

我不知道如何解决这个问题。。。非常感谢您的帮助。

要通过命令行编译多个文件,您必须提供所有必需的
.java
文件,如:

javac Cat.java Animal.java
在同一软件包中,您可以使用
*
通配符,该通配符将拾取当前目录中所有必需的文件:

javac *.java
除此之外,对于您的案例,我将
Cat
Animal
移动到
model
包中,并在父目录中创建了
Test
类,因此命令如下所示:

javac Test.java model/*.java

您可以根据需要更改
模型
,并且正在
Test.java
文件的目录中调用
javac
命令。

公共类Gato extends ANAME
是正确的。真正的问题是,在编译时,由于某种原因,您没有选择
Animal
类。您究竟是如何构建代码的?(另外,如果你没有使用现代的IDE,我不能高度建议你尽快开始这样做。很抱歉,我在翻译帖子时把名字弄错了(因为我的代码实际上是西班牙语的),只是在帖子中修复了它,但同样的问题。像往常一样,我正试图通过带有“javaccat.java”的windows命令行编译Cat.java。我得到这个错误:Cat.java:4:error:找不到符号公共类Cat{^symbol:class Animal 1 Error如果您使用
javac Animal.java Cat.java
,那会怎么样?这似乎是可行的,没有编译器错误,并且创建了Cat.class,谢谢你的帮助!请注意,即使已经编译了
Animal
Cat
。如果你只想编译源代码的一个子集依赖于其他源文件的文件,则必须以不会导致编译的方式告诉
javac
其他源文件的位置。请特别参阅“附加源文件”部分(注意,该链接是针对Java 13的)。非常感谢,这似乎是可行的,Cat.class被创建了,我对不知道这一点感到很愚蠢!真是太感谢你了!!!!np,因为你可能已经看到了在根目录中使用
*
通配符的可能性。在根目录下有更多的包时,你可以使用
javac*.java model/*.java utils/*.java
。之后cmd编译器已经使用完毕,建议您跳转到某个IDE,然后利用依赖关系管理器(Gradle、Maven等)