java包和接口

时间:2014-02-22 18:08:04

标签: java interface packages

我正在练习套餐。我在目录名称中有三个文件。这些文件说明了。

/*filename Eat.java*/
package animal;
public interface Eat{

public void food();

}

第二档:

    /*Animal.java*/
    package animal;
    public interface Animal{

    public void move();

}

实现上述接口的第3个文件

/*Dog.java*/
package animal;
public class Dog implements Animal,Eat
{
int movesteps=2;
String food="MEAT";
Dog()
{

move();
food();


}
public void move()
{
System.out.println("I am a dog i can move just "+this.movesteps+" steps/sec");

}
public void food()
{
System.out.println("I am a dog i only eat "+this.food);

}
public static void main(String args[])
{

Dog myDoggy=new Dog();

System.exit(0);

}

问题在于,当我在所有类中编译没有包的Dog.class时它运行正常,但是当我将它们包含在包中时,编译器会在notepad ++中出现很多错误。

4 个答案:

答案 0 :(得分:0)

所有java文件都应位于“animal”目录中:

- animal
|- Eat.java
|- Animal.java
|- Dog.java

如果您拥有像“com.some.package”这样的包中的所有类,则路径应为

- com
|- some
 |-package
  |- Eat.java
  |- Animal.java
  |- Dog.java

答案 1 :(得分:0)

转到目录D:\javapractice\interface并打开cmd.Keep目录D:\javapractice\interface\animals下的所有三个java文件。

D:\javapractice\interface
- animal
|- Eat.java
|- Animal.java
|- Dog.java

现在开始编译java类

Cmd:D:\javapractice\interface>

javac animal\Eat.java
javac animal\Animal.java
javac animal\Dog.java

您将在D:\ javapractice \ interface \ animal

位置找到三个.class

现在是时候运行它了:

java animal.Dog

答案 2 :(得分:0)

经过长时间的搜索和测试其他IDE的特定代码后,我得到了答案。问题在于Notepadd ++。感谢所有人,它在所有其他IDE上运行良好。

答案 3 :(得分:0)

您希望创建单独的源和输出目录,以便将类编译到其中。除非指定输出目录,否则您的类将被编译到源目录中。当你需要删除旧的类文件时,这是一个真正的痛苦方法(最终你需要)。

假设您有此目录结构:

.
├── classes
└── src
    └── animal
        ├── Animal.java
        ├── Dog.java
        └── Eat.java

像这样编译:

javac -d classes -sourcepath src src/animal/Dog.java 

你最终会得到:

.
├── classes
│   └── animal
│       ├── Animal.class
│       ├── Dog.class
│       └── Eat.class
└── src
    └── animal
        ├── Animal.java
        ├── Dog.java
        └── Eat.java

一个提示:如果编译最依赖的类(即Dog.java),javac将编译其依赖项(Animal,Eat)。这样你就不必执行3次javac了。