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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

自己编代码时发生这样一个问题,下面两段代码除了类名称外都一样,不过第一个编译成功,第二个必须把类之前的public去掉才能编译,弄不明白为什么这样?

第一段,可以编译通过。
public class Test7
{       
         private static Test7 s = null;
         private Test7(){}//构建函数         
        public static  Test7 getInstance()
        {
           if(s==null)
                {
                        synchronized(Test7.class)
                        {
                                if(s==null) //假如没有创建对象则创建对象                                       
                                s = new Test7();
                        }
                }
                return s;
        }
        public static void sop(Object obj)//打印数据,封装为函数,方便调用
        {
                System.out.println(obj);
        }
        public static void spp()//打印数据,封装为函数,方便调用
        {
                System.out.println("使用对象");
        }
}
class Test//调用单例中的功能
{
        public static void main(String[] args)
        {
                Test7.sop("结果");
                Test7.spp();
        }
}

第二段: 必须去掉public才可以编译通过
class Test07
{
         private static Test07 s = null;
         private Test07(){}//构建函数
         
        public static  Test07 getInstance()
        {
           if(s==null)
                {
                        synchronized(Test07.class)
                        {
                                if(s==null) //假如没有创建对象则创建对象                                       
                                s = new Test07();
                        }
                }
                return s;
        }
       
        public static void sop(Object obj)//打印数据,封装为函数,方便调用
        {
                System.out.println(obj);
        }
        public static void spp()//打印数据,封装为函数,方便调用
        {
                System.out.println("使用对象");
        }
}

class Test7//调用单例中的功能
{
        public static void main(String[] args)
        {
                Test07.sop("结果");
                Test07.spp();
        }

}

5 个回复

倒序浏览
应该是类名的问题,Java中的源代码文件需要与public类名相同。
也就是说你一个源代码文件中只能有一个public类,且必须类名为文件名。
你第一段源代码的文件名肯定是Test7.java,而第二个源代码的文件名和public修饰的类名不同,导致编译无法通过。
回复 使用道具 举报
lgn187 发表于 2015-1-11 03:04
应该是类名的问题,Java中的源代码文件需要与public类名相同。
也就是说你一个源代码文件中只能有一个publi ...

O(∩_∩)O谢谢
回复 使用道具 举报
O(∩_∩)O谢谢
回复 使用道具 举报
楼上已说清楚了,不过想要两个类都有public修饰的话,只能写成两个.java文件咯!
回复 使用道具 举报
呵呵  我有懂了  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马