黑马程序员技术交流社区
标题:
请教内部类一个问题
[打印本页]
作者:
李东城
时间:
2013-2-5 16:34
标题:
请教内部类一个问题
本帖最后由 李东城 于 2013-2-6 02:55 编辑
public class Singleton {
String name;
private static Singleton sinleton=null;
private Singleton(){
}
public synchronized static Singleton getSinleton() {
if(sinleton==null){
sinleton=new Singleton();
}
return sinleton;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class run{
public static void main(String[] args) {
Singleton s1 =Singleton.getSinleton();
s1.setName("s1");
Singleton s2 =Singleton.getSinleton();
s2.setName("s2");
System.out.println(s1.getName());
System.out.println(s2.getName());
}
}
复制代码
这样子的话就无法运行了、为什么哦? 内部内有这个规定么?
作者:
陈科宇
时间:
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