黑马程序员技术交流社区

标题: 用public修饰的类为什么编译出错? [打印本页]

作者: 刘国涛    时间: 2013-3-13 18:51
标题: 用public修饰的类为什么编译出错?
本帖最后由 刘国涛 于 2013-3-14 07:47 编辑
  1. public class Student
  2. {
  3.         private String name;
  4.         private int age;
  5.         Student(String name,int age)
  6.         {
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }

  10.         public void setName(String name)
  11.         {
  12.                 this.name = name;
  13.         }
  14.         public String getName()
  15.         {
  16.                  return name;
  17.         }

  18.         public void setAge(int age)
  19.         {
  20.                 this.age = age;
  21.         }
  22.         public int getAge()
  23.         {        
  24.                 return age;
  25.         }
  26. }

  27. public class StudentDemo
  28. {
  29.         public static void main(String[] args)
  30.         {
  31.                 Student s=new Student("zhangsan",20);
  32.                 System.out.println(s.getName()+","+s.getAge());
  33.         }
  34. }
复制代码

怎么声明啊?


作者: 黑马-郑玉元    时间: 2013-3-13 18:56
java的规定,一个.java文件中,只能有一个public类。记得大学的老师特别强调这句话,我就对这句话印象深刻。
只能有一个public类。
作者: vmvm555    时间: 2013-3-13 18:57
一个.java文件中只能有一个类用public修饰
作者: 李思杰    时间: 2013-3-13 19:09
本帖最后由 李思杰 于 2013-3-13 19:15 编辑

public class Student
public class StudentDemo
你写了2个public,应该把第一个public去掉。当一个类使用了public修饰,文件名要和类名相同。
从你的错误提示也可以看出,在第一行你用public修饰了Student类,而编译器找不到Student.java文件,所以报错。


作者: 安鹏宇    时间: 2013-3-13 19:11
在源程序中只有一个public类,是为了让程序在执行时只从一个接口导入。
public 类的名字必须和java文件名一致
如果能有多个public类,程序就无法识别该从哪里导入程序了。
作者: 沈子豪    时间: 2013-3-13 19:15
一个java源文件中可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致
作者: shampoowoo    时间: 2013-3-13 19:24
一个JAVA文件中 只允许声明一个Public类,就像C++程序中只允许有一个Main函数一样的
作者: 杨建聪    时间: 2013-3-13 19:37
一个java文件中只能有一个用public修饰的类,

而且JAVA文件名必须与这个用public修饰的类的名字相同

如需要访问其他类,可以在public类中设置其他类的访问方式!
作者: 刘国涛    时间: 2013-3-13 19:37
本帖最后由 刘国涛 于 2013-3-13 19:39 编辑
李思杰 发表于 2013-3-13 19:09
public class Student
public class StudentDemo
你写了2个public,应该把第一个public去掉。当一个类使用 ...

但为什么把第二个public去掉而保留第一个也会出现错误提示呢?
作者: wangjinyu501    时间: 2013-3-13 19:38

一个java源文件中可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致
作者: 安鹏宇    时间: 2013-3-13 19:56
刘国涛 发表于 2013-3-13 19:37
但为什么把第二个public去掉而保留第一个也会出现错误提示呢?

类名加public的时候  文件名必须和类名一致
如果你把第二个public去掉   你的文件名必须和第一个类的类名一致,但是你的主函数在第二个类中
主函数是程序的入口,程序运行先找pubic哪个类找不到主函数就报错  

你把第一个类的public去掉  文件名 和第二个类的类名一致就可以了
我专门把两种都试了。。。
作者: Benwolf0818    时间: 2013-3-13 22:49
编译没法通过,错误提示The public type Student must be defined in its own file,是因为一个.java中只可以定义一个public class
作者: 刘国涛    时间: 2013-3-14 07:47
我知道了,谢谢各位的回答!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2