我在同一目录中有以下文件。
这是我的代码
boys.java
import java.io.*;
public class boys
{
String name;
int age;
boys()
{
this.name="empty";
this.age=0;
}
void display()
{
System.out.println("Name =" + name + "\nAge ="+ age );
}
}
girls.java
import java.io.*;
class girls
{
String name;
int age;
girls(String name,int age)
{
this.name=name;
this.age=age;
}
void display()
{
System.out.println("Name="+name+"Age="+age);
}
}
group.java`
import java.io.*;
class boys
{
int rollno;
boys()
{
rollno=100;
System.out.printf("%d",rollno);
}
}
public class group
{
public static void main(String args[])
{
boys b = new boys();
girls g = new girls("sri divya",21);
g.display();
}
}
这是我使用javac命令后的问题我只有一个boys.class文件为什么?和
命令'java group'后显示文件group.java中的boys类的结果而不是boys.java文件中的boys类为什么?
如果我想在boys.java中输入男生课,我该怎么办?尽管在group.java中有男生课?
尽管有两个相同的班级名称,为什么没有错误?
有人请帮帮我答案 0 :(得分:2)
这是我使用javac命令后的问题,我只有一个 boys.class文件为什么?
在给定的包中只能有一个名为boys
的类,因此编译器只生成一个。
命令' java group'向我展示了男生班的成绩 在文件group.java中,而不是文件中的boys类 boys.java为什么?
当编译器解析你的group.java
文件时,他找到了两个类,然后编译它们。
如果我想在boys.java中输出boys类,我该怎么办? 尽管男生在group.java上课?
从boys
删除group.java
的定义。
尽管有两个相同的班级名称,为什么没有错误?
当您编译group.java
时,编译器会在其中找到boys
类,因此不需要向外寻找其定义。
在同一个包中的不同位置定义一个类是没有意义的。选择。
现在,如果您真的想将boys
类替换为boys.java
文件生成的类,您可以:
group.java
(这将生成group.class
和。{
boys.class
来自它)boys.java
(这将覆盖旧的boys.class
使用boys.java
)它会起作用,但我肯定不会使用这样的结构。
答案 1 :(得分:1)
如果您将两个类命名为相同,则它们应位于不同的包中,并且当您要在另一个类中使用它们时,您必须使用其完全限定名称引用(至少)其中一个。< / p>
如果两个类在同一个包中具有相同的名称,ClassLoader
只会加载其中一个 - 这肯定不是你想要的。这也会导致Eclipse出错,即:the type Boys is already defined
。
所以,如果你可以帮助它,你真的不应该以相同的方式命名类(并且绝对不在同一个包中)。
更新:我已经测试了代码,在这种情况下代码运行甚至在抛出编译错误后,Boys
类被ClassLoader
加载, Group
类中定义的一个不是。实际上,Boys
中的Groups.java
类甚至不在字节码中,它在编译期间被删除。