java编译的问题 两个类在同一个包中 源代码如下

publicclassTest2{publicstaticvoidmain(String[]args){Person2p=newPerson2();Test2t=newT... public class Test2{
public static void main(String[] args){
Person2 p = new Person2();
Test2 t = new Test2();
t.m1(p);
t.m2(p);
t.m3(p);
}
public void m1(Runner2 r){
r.run();
}
public void m2(Swimmer s){
s.swim();
}
public void m3(Animal2 a){
a.eat();
}
}

interface Runner2{
public abstract void run();
}
interface Swimmer{
public abstract void swim();
}
abstract class Animal2{
public abstract void eat();
}
public class Person2 extends Animal2 implements Runner2,Swimmer{
public void run(){
System.out.println("I am runing, to the eat");
}
public void swim(){
System.out.println("I am swimming, to the island");
}
public void eat(){
System.out.println("I'm eating");
}
}

Test2的里面创建了Person2对象,那编译Test2的时候 它应该会自动找到Person2类并编译的,编译Person2的时候 会把它的父类和实现的接口全编译了是吧 但是为什么编译的时候报错,错误如下:
Test2.java:11: 找不到符号
符号: 类 Runner2
位置: 类 Test2
public void m1(Runner2 r){
^
Test2.java:15: 找不到符号
符号: 类 Swimmer
位置: 类 Test2
public void m2(Swimmer s){
^
Test2.java:19: 找不到符号
符号: 类 Animal2
位置: 类 Test2
public void m3(Animal2 a){
^
3 错误

请问为什么
我先把Person2编译下 在编译Test2 就能通过 这又是为什么
展开
 我来答
百度网友845f74e61
2012-07-11 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1615万
展开全部
javac *.java
这样试一下。
如果你这两个类,A引用了B类
那么就要选编译出B类。
如果相互引用了的话,编译那个都是不成功的,就用
javac *.java
kriszhang2012
2012-07-11 · TA获得超过369个赞
知道小有建树答主
回答量:494
采纳率:0%
帮助的人:203万
展开全部
因为Test2依赖Person2,而Person2不依赖Test2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f5dc56e00
2012-07-11 · 超过19用户采纳过TA的回答
知道答主
回答量:384
采纳率:0%
帮助的人:56.9万
展开全部
当你的那几个类在都在同一个java文件中,或者使用IDE时才是你说的那种情况。。。
在不同的java文件中时,必须按顺序进行手动编译
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戴的天
2012-07-11 · TA获得超过108个赞
知道小有建树答主
回答量:142
采纳率:100%
帮助的人:80.6万
展开全部
Test2的里面创建了Person2对象,那编译Test2的时候 它应该会自动找到Person2类并编译的,编译Person2的时候 会把它的父类和实现的接口全编译了是吧
你这句话是错误的,你如果是用javac编译的话,是需要先编译好Person2类然后才能编译通过Test2的,而不会有自动编译的过程.因为Person2不是Test2的内部类,如果是内部类的话就会一起编译。
更多追问追答
追问
我把Test2类中  其他方法都注释掉,只剩main方法并且main方法只剩下Person2 p = new Person2 这一句   就可以编译通过呢?
追答
也不行,Person2 p=new Person2这会要求你首先存在person2这个类,才能在这里被引用,是吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hu8373551
2012-07-18 · 超过11用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:24万
展开全部
你这个是不是都不放在一个包里了。。。
在同一个包里怎么可有有两个public 呢。。。
你把你的public 删掉一个。。。 并且public定义的类要与文件名相同哦。。
在编译下看吧。
更多追问追答
追问
一个包里面不能有两个public类?
我的包里面有N哥public类啊
追答
你写的是在同一个包中但是你写的是在同一个java程序中吧。。。
如过在同一个包中 两个java程序都要打包。。。
package work.study;
public class Person2
{
}

package work.study;
public class Test2
{
}
这样的话就可以。。。
在同一个java程序中不能有两个public 类。。。
你这样试下哦。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式