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 就能通过 这又是为什么 展开
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 就能通过 这又是为什么 展开
5个回答
展开全部
因为Test2依赖Person2,而Person2不依赖Test2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当你的那几个类在都在同一个java文件中,或者使用IDE时才是你说的那种情况。。。
在不同的java文件中时,必须按顺序进行手动编译
在不同的java文件中时,必须按顺序进行手动编译
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Test2的里面创建了Person2对象,那编译Test2的时候 它应该会自动找到Person2类并编译的,编译Person2的时候 会把它的父类和实现的接口全编译了是吧
你这句话是错误的,你如果是用javac编译的话,是需要先编译好Person2类然后才能编译通过Test2的,而不会有自动编译的过程.因为Person2不是Test2的内部类,如果是内部类的话就会一起编译。
你这句话是错误的,你如果是用javac编译的话,是需要先编译好Person2类然后才能编译通过Test2的,而不会有自动编译的过程.因为Person2不是Test2的内部类,如果是内部类的话就会一起编译。
更多追问追答
追问
我把Test2类中 其他方法都注释掉,只剩main方法并且main方法只剩下Person2 p = new Person2 这一句 就可以编译通过呢?
追答
也不行,Person2 p=new Person2这会要求你首先存在person2这个类,才能在这里被引用,是吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个是不是都不放在一个包里了。。。
在同一个包里怎么可有有两个public 呢。。。
你把你的public 删掉一个。。。 并且public定义的类要与文件名相同哦。。
在编译下看吧。
在同一个包里怎么可有有两个public 呢。。。
你把你的public 删掉一个。。。 并且public定义的类要与文件名相同哦。。
在编译下看吧。
更多追问追答
追问
一个包里面不能有两个public类?
我的包里面有N哥public类啊
追答
你写的是在同一个包中但是你写的是在同一个java程序中吧。。。
如过在同一个包中 两个java程序都要打包。。。
package work.study;
public class Person2
{
}
package work.study;
public class Test2
{
}
这样的话就可以。。。
在同一个java程序中不能有两个public 类。。。
你这样试下哦。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询