3-1饿汉式创建有关问题
为什么静态实例要私有?
SingletonOne one = SingletonOne.getInstance();
听课后我理解的是:对象实例化过程会默认调用构造方法进行实例化,因此为了限制实例化的路径,设置构造方法为私有,这样类外就不能再实例化过程中调用构造方法,这样措辞对嘛?- 我不理解的是:等号后的这种书写格式,是只有在静态实例可以这么使用还是只要构造方法私有了都可以?为什么方法的调用可以和对象划等号?我感觉自己说的有问题 老师能不能等号前后分别是什么解释一下?
在test类中的调用过程是怎样的?具体在SingletonOne这个类中先执行哪句后执行哪句?我尝试过debug 但不能得出我想要的结果,因为我不太明白这个模式想要达到的目的 跟之前所学的不知道怎么连接,感觉中断了,这章的课死记硬背行不行?
正在回答
同学你好,
1、对于第一个问题,单例模式的目的就是禁止其他类创建该类的对象,所以要声明为private,保证只能在本类中创建,而无法在其他类创建该类的对象。
2、对于第二个问题,你的理解是正确的。
3、对于第三个问题,因为getInstance()方法是静态方法,所以直接可以通过类名.方法名的方式,调用静态方法。又因为getInstance()方法返回时是SingletonOne类型,所以就需要使用SingletonOne类型进行接收调用getInstance()方法后的值。
简单来说就是,右面为通过类名调用getInstance()方法,而左面就是接收getInstance()方法返回的对象 为SingletonOne类型的对象 one。
如:
4、对于第四个问题,test类中的调用过程其实就是首先执行Test类中的main()方法,然后执行SingletonOne one =SingletonOne.getInstance();代码时,首先会加载SingletonOne 类,静态方法和静态变量会在类加载时初始化,也就是执行private static SingletonOne instance=new SingletonOne();代码,然后调用getInstance();方法,返回对象实例。输出one对象,结束代码。
建议同学可以先将代码记下来,可以按照思路进记下。也建议同学多听几遍课程哦~
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星