class Example(){
public void disp(float num1, int num2){
System.out.println("First disp method in Example class");
System.out.println("num1="+num1);
}
public int disp(int num1, int num2){
System.out.prinln("Second disp method in Example class");
System.out.println("num2="+num2);
return num1;
}
class Demo(){
public static void main(String args[]){
Example obj=new Example();
obj.disp(60,20);
}
}
输出:
示例类中的第二个disp方法
num1=60
这怎么可能?第二种显示方法返回整数类型值,调用语法不会将该值存储在任何位置。
第二个问题是,无论我将此程序保存为Example.java
还是Demo.java
,它都可以正常运行。但就我的知识而言,文件名应与容纳main函数的类相同。
答案 0 :(得分:2)
运行提供的程序我得到了输出
Second disp method in Example class
num2=20
这是因为带有两个int
参数的方法签名与您提供的方法调用完全匹配
关于返回类型,Java在决定使用哪种方法时甚至不考虑返回类型。只有返回类型才有两种方法不同是违法的。您可以在the language specs中阅读更多内容。
您没有将返回的int
存储在任何地方这一事实无关紧要,Java并不要求您这样做。
修改强>
关于第二个问题,唯一的规则是每个文件中只能有一个public
类,并且该类的名称必须与文件名匹配。
由于您的Example
课程不是public
,因此该规则不适用。您可以在文件中包含任意数量的非公共类。
答案 1 :(得分:0)
我认为您需要确保重新编译代码,而不仅仅是保存代码。上面的清单肯定会输出:
Second disp method in example class num2=20
答案 2 :(得分:0)
文件名应与容纳main函数的类相同。 这是不正确的。如果您的A类是公开的,那么文件Name将是A.java。 在内部类中,如果要创建main方法,那么该类应该是静态的
答案 3 :(得分:0)
关于您的第二个问题,由于您没有将任何一个类声明为公共类,因此您为该文件指定的名称无关紧要。您将其中一个类声明为public时,文件名必须与之匹配。尝试在同一文件中声明多个公共类是编译器错误。
为了可维护性,尽可能在每个文件中保留一个类。