黑马程序员技术交流社区

标题: 报错提示我java 类是公共的,应在名为.java 的文件中声明 [打印本页]

作者: 攀攀    时间: 2014-4-14 19:23
标题: 报错提示我java 类是公共的,应在名为.java 的文件中声明
  1. public class Yuangong
  2. {
  3.          String name;
  4.          String id;
  5.     double salary;
  6.         public void setname (String name)
  7.         {
  8.                 this.name=name;
  9.         }
  10.         public String getname()
  11.         {
  12.                 return name;
  13.         }
  14.         public void setnum (String id)
  15.         {
  16.                 this.id = id;
  17.         }
  18.         public String getnum()
  19.         {
  20.                 return id;
  21.         }
  22.        
  23.         void setnum (double salary)
  24.         {
  25.                 this.salary = salary;
  26.         }
  27.         public double getsalary()
  28.         {
  29.                 return salary;
  30.         }
  31.         Yuangong(String name, String id , double salary)
  32.         {
  33.                 this.name = name;
  34.                 this.id = id;
  35.                 this.salary = salary;
  36.         }
  37.         public void print()
  38.         {
  39.                 System.out.println(name+".."+id+".."+salary);
  40.         }

  41.        
  42. }
  43. public class Jingli extends Yuangong
  44. {
  45.          int reward;
  46.         Jingli(String name, String id , double salary , int reward)
  47.         {
  48.                 super(name,id,salary);
  49.                 this.reward = reward;
  50.         }
  51.         public void print()
  52.         {
  53.                 System.out.println(name+".."+id+".."+salary+".."+reward);
  54.         }

  55. }
  56. public class AbstractDemo
  57. {
  58.         public static void main(String[] args)
  59.         {
  60.                 Jingli a = new Jingli ("经理","1000",5000,200);
  61.                 Yuangong b = new Yuangong ("员工1","10001",3500);
  62.                 a.print();
  63.                 b.print();
  64.         }
  65. }
复制代码

提示我说是什么java 类是公共的,应在名为.java 的文件中声明 这是怎么回事
作者: ___________゛M    时间: 2014-4-14 19:24
你是三个类写在一个类里面的还是 ?
作者: 攀攀    时间: 2014-4-14 20:09
___________゛M 发表于 2014-4-14 19:24
你是三个类写在一个类里面的还是 ?

我也弄不清 都写一块了反正
作者: 流氓划过夜空    时间: 2014-4-14 21:04
本帖最后由 流氓划过夜空 于 2014-4-14 21:08 编辑

你三个类写一个文件里面只能有一个类能用public修饰符  ,  其他的不能加public修饰符  ,最好分开写,这样的写法  开发中都没有的。


比如  :
class jingli extend yuangong{
。。。。。。。


写在一个文件名为jingli.java中

class yuangong{
、、、、、、、、、、、


写在一个文件名为yuangong.java文件中


如果两个文件在同一个包下      不用import

作者: alucard    时间: 2014-4-14 21:06
本帖最后由 alucard 于 2014-4-14 21:09 编辑

同学你好,你还是没有按照视频上做,用EditPlus进行编程,新建的java文件是不会在class类前面加上public关键字的,肯定是你手动添加的,这样做反而是画蛇添足,先说解决办法:你将Yuangong类和Jingli类前面的public去掉就好了。下面说一下为什么这么做。
“类 Yuangong 是公共的,应在名为 Yuangong.java 的文件中声明”,这句话需要分两步来理解:
1、如果类Yuangong 被声明为公共的(public),那么必须将类Yuangong 保存在名为Yuangong .java的文件中;
2、反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同。比如文件Yuangong .java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为Yuangong 。此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等。
说的简单点,一个文件中最多只能有一个类是public的,这样可以暴露类的定义,方便其他类来访问! 如果已经有了这个公共的类,那么这个文件名必须和类名相同!因为你的AbstractDemo 已经是public修饰的了,所以去掉另外两个类中的public,保存的文件名为AbstractDemo .java
  1. class Yuangong
  2. {
  3.          String name;
  4.          String id;
  5.                 double salary;
  6.         public void setname (String name)
  7.         {
  8.                 this.name=name;
  9.         }
  10.         public String getname()
  11.         {
  12.                 return name;
  13.         }
  14.         public void setnum (String id)
  15.         {
  16.                 this.id = id;
  17.         }
  18.         public String getnum()
  19.         {
  20.                 return id;
  21.         }
  22.         
  23.         void setnum (double salary)
  24.         {
  25.                 this.salary = salary;
  26.         }
  27.         public double getsalary()
  28.         {
  29.                 return salary;
  30.         }
  31.         Yuangong(String name, String id , double salary)
  32.         {
  33.                 this.name = name;
  34.                 this.id = id;
  35.                 this.salary = salary;
  36.         }
  37.         public void print()
  38.         {
  39.                 System.out.println(name+".."+id+".."+salary);
  40.         }
  41. }
  42. class Jingli extends Yuangong
  43. {
  44.          int reward;
  45.         Jingli(String name, String id , double salary , int reward)
  46.         {
  47.                 super(name,id,salary);
  48.                 this.reward = reward;
  49.         }
  50.         public void print()
  51.         {
  52.                 System.out.println(name+".."+id+".."+salary+".."+reward);
  53.         }

  54. }
  55. public class AbstractDemo
  56. {
  57.         public static void main(String[] args)
  58.         {
  59.                 Jingli a = new Jingli ("经理","1000",5000,200);
  60.                 Yuangong b = new Yuangong ("员工1","10001",3500);
  61.                 a.print();
  62.                 b.print();
  63.         }
  64. }
复制代码
效果如图中所示:没有改之前会报异常,去掉public后,编译通过。




作者: yunyou    时间: 2015-5-21 23:40
duo kan duo xue
作者: yunyou    时间: 2015-5-21 23:42
yunyou 发表于 2015-5-21 23:40
duo kan duo xue

mei tian yi dian
作者: SilentMax    时间: 2016-4-11 11:45
刚才我也遇见了。谢谢




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