A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

-_青春,就该努

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

本帖最后由 -_青春,就该努 于 2012-7-20 14:03 编辑

package file;

import java.util.Scanner;

public class Visitor {

String name;
int age;

public void show() {
Scanner input = new Scanner(System.in);
while (!"n".equals(name)) {
if (age >= 18 && age <= 60) {
System.out.println(name + "的年龄为:" + age + ",门票价格为20元\n");
} else {
System.out.println(name + "的年龄为:" + age + ",门票免费\n");
}
System.out.print("请输入姓名:");
name = input.next();
if (!"n".equals(name)) {
System.out.print("请输入年龄:");
age = input.nextInt();
}
}
System.out.print("退出程序");
}

}
public class InitialVistor {

}

这段代码中存在两个public class 方法 会报错  请问怎样可以在一个类中存在两个 public class 方法。或者如何存在两个class方法

3 个回复

倒序浏览
java文件允许有多个class,但是只能有一个用public修饰。
因为java的编译机制是从这个public开始的。如果,
你加的这个里面方法不是public static void main(),
编译机制就会出错了。而且,
你加的这个public的class名必须是你java文件的文件名,
否则也无法编译。

一个文件中多个类 将来用 javac 进行编译的时候,
最终会生成多个 .class 文件,每一个类对应一个 .class 文件。
运行时只要运行对应的 .class 文件就可以了。
但是,当你的类被 public 修饰时,此时文件名必须和该类保持一致
(例如 public class A{}只能放在 A.java 文件中,
不然在用 javac 编译时会提示错误:类 A 是公共的,
应在名为 A.java 的文件中声明)。
也就是说在同一个 .java 文件中,
不应该出现2个或2个以上的 public class 。
如果有一个public class 类,
就应该让文件名和此类名相同;那如果没有呢,
即所有的 class 都没有修饰符,
那么可以给该文件随便起名字,
甚至可以不和任意一个类同名,哪怕是汉字名称都可以,
但是后缀还是要有 .java

希望对楼主有帮助。
回复 使用道具 举报
陈世涛 发表于 2012-7-20 13:10
java文件允许有多个class,但是只能有一个用public修饰。
因为java的编译机制是从这个public开始的。如果, ...

嗯,这个我知道,但是我看到了一段代码是这样的package file;

import java.util.Scanner;

public class Visitor {

public class a{

}
}
这样也是可以允许运行的。
这个怎么解释呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马