java 的构造函数修饰符public private protected
java中使用new關(guān)鍵字創(chuàng)建對象的時候,構(gòu)造方法上的修飾符起什么作用?
1,限定可以創(chuàng)建對象的位置
使用public 修飾,new對象時,可以在任何包下的任何類中。
使用protected修飾,只能在當前類,或者同一包下創(chuàng)建對象。
使用private修飾,只能在當前類中創(chuàng)建對象。
2,使用不同修飾符修飾構(gòu)造函數(shù)有啥作用?
public修飾,不限定對象啥時候在什么地方創(chuàng)建。
protected修飾,限制對象創(chuàng)建范圍到同一個包下,當需要外部去創(chuàng)建對象,但是又不想所有使用的地方都能創(chuàng)建。可以使用protected修飾構(gòu)造方法
private修飾,只能本類創(chuàng)建對象,進一步縮小對象能創(chuàng)建的地方,如果外部需要使用類對象時,提供一個返回當前類對象的接口【必須是public,且 static 修飾】,設(shè)計模式之單例模式就是構(gòu)造函數(shù)私有化。
對于類的設(shè)計者來說,如果想要類對象的創(chuàng)建由自己把控,可以使用private構(gòu)造函數(shù),或者 protected 構(gòu)造函數(shù)。
No visible constructors in class
下面的錯誤是我構(gòu)造一個工廠類時候報的錯誤,百度了一圈發(fā)現(xiàn)網(wǎng)上也有類似的錯誤都是構(gòu)造工廠類時候報出,但是錯誤不相同,最后還是靜下心來看看報錯的錯誤,從上往下看,一不小心看到如下錯誤:
Caused by: java.lang.IllegalArgumentException: No visible constructors in classcom.liulangtao.frame.demo.config.elasticSearch.ElasticSesrchClientFactory
翻譯過來就是java.lang.IllegalArgumentException引起錯誤,沒有ElasticSesrchClientFactory的構(gòu)造函數(shù)。這樣小編瞬間就理解了果斷將ElasticSesrchClientFactory的構(gòu)造函數(shù)的private修改為public ,重啟服務(wù)瞬間好了。
總結(jié)
以上是生活随笔為你收集整理的java 的构造函数修饰符public private protected的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pypthon3精要(15)-zip
- 下一篇: pypthon3精要(16)-enume