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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wahaha 中级黑马   /  2013-3-5 01:03  /  1942 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏添 于 2013-3-11 19:51 编辑

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

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

上面这段代码编译不通过

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

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

8 个回复

倒序浏览
你保存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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1 赞一个!

查看全部评分

回复 使用道具 举报
李志卫 发表于 2013-3-5 01:07
你保存java文件的名字是不是和这里的public类名字不同?
是不是和同包里面其他公有类名字相同?

名字确实不一样,这个有影响吗?编译和运行不是分开的吗?
回复 使用道具 举报
一个 .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 的。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1 赞一个!

查看全部评分

回复 使用道具 举报
如果源文件中有多个类 ,那么最多只有一个public类,如果源文件中有public类,那么源文件的名字必须和这个类的名字完全相同,如果源文件中没有public类,那么源文件的名字只要和某一个类的名字相同即可,这是规定,不要问为什么,学java书本上第一章就这么写。。。
回复 使用道具 举报
学习一下{:soso_e130:}
回复 使用道具 举报
如果类为public,类名必须和源文件名一致。
回复 使用道具 举报
肖明凯 发表于 2013-3-5 01:14
一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?
其实文件名是无所谓 ...

介位同学回答的很好哇,彻底懂了.灰常感谢
回复 使用道具 举报
一个.java文件中,只能有一个public公有类,.java文件名称必须与这个公有类的名称相同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马