黑马程序员技术交流社区

标题: public class 编译不通过,求解释,谢谢 [打印本页]

作者: wahaha    时间: 2013-3-5 01:03
标题: public class 编译不通过,求解释,谢谢
本帖最后由 夏添 于 2013-3-11 19:51 编辑

public class Test
{
        public static void main(String[] args)
        {

                System.out.println("haha");
        }
}

上面这段代码编译不通过

去掉public  变成下面这样就通过了,这是为什么呢?知道的朋友解释下啊,最好在对public拓展下哈
class Test
{
//...
}

作者: lzw123451    时间: 2013-3-5 01:07
你保存java文件的名字是不是和这里的public类名字不同?
是不是和同包里面其他公有类名字相同?


包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
      不同包中的子类还可以直接访问父类中被protected权限修饰的成员。
      包与包之间可以使用的权限只有两种,public protected。所以外部类现在有三种修饰  public protected default。
      一个.java文件中,只能有一个public公有类,.java文件名称必须与这个公有类的名称相同。      

      
                         public          protected              default           private
同一个类中            ok                  ok                       ok                 ok
同一个包中            ok                  ok                       ok
不同包中子类访问父类 ok              ok
不同包                  ok

作者: wahaha    时间: 2013-3-5 01:10
李志卫 发表于 2013-3-5 01:07
你保存java文件的名字是不是和这里的public类名字不同?
是不是和同包里面其他公有类名字相同?

名字确实不一样,这个有影响吗?编译和运行不是分开的吗?
作者: 肖明凯    时间: 2013-3-5 01:14
一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?
其实文件名是无所谓的,因为将来用 javac 进行编译的时候,最终会生成多个 .class 文件,每一个类对应
一个 .class 文件。运行时只要运行对应的 .class 文件就可以了,这时 .java 文件就显得没什么用了( 运行
时不需要 )。
但是当你的类被 public 修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在
A.java 文件中,不然在用 javac 编译时会提示错误:类 A 是公共的,应在名为 A.java 的文件中声明)。
也就是说在同一个 .java 文件中,不应该出现2个或2个以上的 public class 。如果有一个public class
类,就应该让文件名和此类名相同;那如果没有呢,即所有的 class 都没有修饰符,那么可以给该文件随便
起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java 的。
作者: 夏晓彤    时间: 2013-3-5 01:18
如果源文件中有多个类 ,那么最多只有一个public类,如果源文件中有public类,那么源文件的名字必须和这个类的名字完全相同,如果源文件中没有public类,那么源文件的名字只要和某一个类的名字相同即可,这是规定,不要问为什么,学java书本上第一章就这么写。。。
作者: 李辉    时间: 2013-3-5 01:29
学习一下{:soso_e130:}
作者: 贾文泽    时间: 2013-3-5 02:26
如果类为public,类名必须和源文件名一致。
作者: wahaha    时间: 2013-3-5 20:38
肖明凯 发表于 2013-3-5 01:14
一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?
其实文件名是无所谓 ...

介位同学回答的很好哇,彻底懂了.灰常感谢
作者: 明锦添    时间: 2013-3-5 22:37
一个.java文件中,只能有一个public公有类,.java文件名称必须与这个公有类的名称相同。




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