今天看单例模式的视频时,发现一个错误,毕老师的代码是这样子的
我再eclipse里运行的时候出错了,按照错误指示我在 class Single 前面加上了静态static
这样代码就可以正常运行了
但是究其原因我确实不知道,{:soso_e101:}
各位一起来看看咯{:soso_e154:} public class SingleDemo {
class Single
{
private int num;
private Single() //第一步构造函数私有化
{ }
private static Single s=new Single(); //第二步自定义一个对象s
public static Single getInstance() //第三步提供方法可获取到该对象
{
return s;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public static void main(String[] args) {
Single s1=new Single();
s1.setNum(20);
System.out.println(s1.getNum());
}}
class Single
{
private int num;
private Single() //第一步构造函数私有化
{ }
private static Single s=new Single(); //第二步自定义一个对象s
public static Single getInstance() //第三步提供方法可获取到该对象
{
return s;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public class SingleDemo {
public static void main(String[] args) {
Single s1=Single.getInstance();
Single s2=Single.getInstance();
s1.setNum(20);
System.out.println(s2.getNum()); }
金肖 发表于 2012-5-7 21:41
因为主函数是静态的,静态不能访问非静态,而你的 class Single在成员位置上,可以理解是一个成员变量
所以 ...
如果说因为主函数是静态的,静态的不能访问非静态的那下面的程序怎么能顺利通过呢。对象直接访问了成员变量num.
class Single
{
private int num;
private Single() //第一步构造函数私有化
{ }
private static Single s=new Single(); //第二步自定义一个对象s
public static Single getInstance() //第三步提供方法可获取到该对象
{
return s;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public static void main(String[] args) {
Single s1=new Single();
s1.setNum(20);
System.out.println(s1.getNum());
}}
其实是我写错了!!正确的代码应该是这样子的 嘿嘿{:soso_e106:}
唉!!这回丢人丢大发啦
static class Single
{
private int num;
private Single() //第一步构造函数私有化
{ }
private static Single s=new Single(); //第二步自定义一个对象s
public static Single getInstance() //第三步提供方法可获取到该对象
{
return s;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public class SingleDemo {
public static void main(String[] args) {
Single s1=Single.getInstance();
Single s2=Single.getInstance();
s1.setNum(20);
System.out.println(s2.getNum()); }