我有一个目录E:\test\access
...
在E:\test
我创建了一个文件Coffee.java
,其中包含:
package test;
public class Coffee
{
protected void service(){
System.out.println("i am service in coffee");
}
public static void main(String[] args){
}
}
class Cafe
{
public static void main(String[] args){
Coffee c=new Coffee();
c.service();
}
}
我执行了以下命令:
E:\test> javac Coffee.java
E:\test> java test.Cafe
它有效。接下来,我进入E:\test\access
目录并创建了以下文件Coffee1.java
:
package access;
import test.Coffee;
public class Coffee1 extends Coffee
{
public static void main(String[] args){
Coffee c=new Coffee();
c.service();
Coffee1 c1=new Coffee1();
c1.service();
}
}
我进口并延长了咖啡吧?那么为什么我不能创建该类的对象呢? 我后来评论了那些东西并尝试编译并执行程序
2:我跑了
E:\test\access> javac Coffee1.java
并编译。
如果我这样做:
E:\test\access> java access.Coffee1
它给我一个错误,说它无法找到主要方法。
同样适用于测试文件夹中的Coffee.java。为什么不在这里工作?
我无法了解这个包的工作原理以及受保护的东西如何适用于其他包中的子类。请详细解释。
答案 0 :(得分:0)
Java希望您的目录结构能够镜像您的包结构。如果您的Coffee1
课程位于test\access
,则应该在test.access
个包中,您应该从根javac
执行java
和E:\
在这种情况下),像这样:
E:\> javac test\access\Coffee1.java
答案 1 :(得分:-1)
您可以执行包文件To learn about packages you should see this tutorial. precise explanation to all your questions
javac -d . UrJavaFilename.java
并运行
java packageName.className
如果您要导入其他类,那么您可以使用: - 您应该定义导入的内容并提供类路径
Javac -cp e:\Yourdir; -d . UrJavaFilename.java