黑马程序员技术交流社区

标题: 请问一下代码编译过程中遇到加public编译不通过的问题 [打印本页]

作者: yumin    时间: 2015-1-11 02:38
标题: 请问一下代码编译过程中遇到加public编译不通过的问题
自己编代码时发生这样一个问题,下面两段代码除了类名称外都一样,不过第一个编译成功,第二个必须把类之前的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();
        }

}


作者: lgn187    时间: 2015-1-11 03:04
应该是类名的问题,Java中的源代码文件需要与public类名相同。
也就是说你一个源代码文件中只能有一个public类,且必须类名为文件名。
你第一段源代码的文件名肯定是Test7.java,而第二个源代码的文件名和public修饰的类名不同,导致编译无法通过。
作者: yumin    时间: 2015-1-11 12:40
lgn187 发表于 2015-1-11 03:04
应该是类名的问题,Java中的源代码文件需要与public类名相同。
也就是说你一个源代码文件中只能有一个publi ...

O(∩_∩)O谢谢
作者: yumin    时间: 2015-1-11 12:42
O(∩_∩)O谢谢
作者: 吕勇    时间: 2015-1-11 13:11
楼上已说清楚了,不过想要两个类都有public修饰的话,只能写成两个.java文件咯!
作者: jiangwenjun    时间: 2015-1-11 21:13
呵呵  我有懂了  谢谢





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