黑马程序员技术交流社区

标题: 请教内部类一个问题 [打印本页]

作者: 李东城    时间: 2013-2-5 16:34
标题: 请教内部类一个问题
本帖最后由 李东城 于 2013-2-6 02:55 编辑
  1. public class Singleton {


  2. String name;

  3. private static Singleton sinleton=null;

  4. private Singleton(){



  5. }



  6. public synchronized static Singleton getSinleton() {

  7. if(sinleton==null){

  8. sinleton=new Singleton();

  9. }

  10. return sinleton;

  11. }


  12. public String getName() {

  13. return name;

  14. }


  15. public void setName(String name) {

  16. this.name = name;

  17. }


  18. }

  19. class run{

  20. public static void main(String[] args) {

  21. Singleton s1 =Singleton.getSinleton();

  22. s1.setName("s1");

  23. Singleton s2 =Singleton.getSinleton();

  24. s2.setName("s2");

  25. System.out.println(s1.getName());

  26. System.out.println(s2.getName());



  27. }
  28. }
复制代码
这样子的话就无法运行了、为什么哦?  内部内有这个规定么?
作者: 陈科宇    时间: 2013-2-5 16:53
      首先不谈这个运行还是不能运行,你的主类命名为run是真心不应该呀,这是很不好的命名习惯。
作者: 陈科宇    时间: 2013-2-5 16:58
      我仔细看了你的代码。我首先得提一提,这里面没有内部类。你的错误在于应该把Singleton的public关键字去掉,run应该冠上这个关键字。一个java文件里,只允许有一个类被冠上public关键字,一旦冠上了这个关键字,文件名就必须是该类名。内部类是在一个类的内部。相当于一个类的变量。你这里是在一个文件里写了两个类。
作者: 陈科宇    时间: 2013-2-5 17:00
补充一下,你的run类有主方法,是可运行的,所以你得把public关键字给它。我也从未见过把run来当类名的。我们已经习惯了它是线程里的方法,所以还是建议你换个名字,并且首字母一定要大写。
作者: LostPriest    时间: 2013-2-5 18:21
main函数是不是应该在主类啊,构造函数私有了还可以创建对象么?
作者: 黑马-小龙    时间: 2013-2-5 20:06
我很奇怪的是,你的外部类,根本没调用内部类对象。外部类是是不能直接使用外类对象的哦





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