java 的构造函数修饰符public private protected

x33g5p2x  于2021-12-01 转载在 Java  
字(1.1k)|赞(0)|评价(0)|浏览(525)

java中使用new关键字创建对象的时候,构造方法上的修饰符起什么作用?

1,限定可以创建对象的位置

使用public 修饰,new对象时,可以在任何包下的任何类中。

使用protected修饰,只能在当前类,或者同一包下创建对象。

使用private修饰,只能在当前类中创建对象。

2,使用不同修饰符修饰构造函数有啥作用?

public修饰,不限定对象啥时候在什么地方创建。

protected修饰,限制对象创建范围到同一个包下,当需要外部去创建对象,但是又不想所有使用的地方都能创建。可以使用protected修饰构造方法

private修饰,只能本类创建对象,进一步缩小对象能创建的地方,如果外部需要使用类对象时,提供一个返回当前类对象的接口【必须是public,且 static 修饰】,设计模式之单例模式就是构造函数私有化。

对于类的设计者来说,如果想要类对象的创建由自己把控,可以使用private构造函数,或者 protected 构造函数。

No visible constructors in class

下面的错误是我构造一个工厂类时候报的错误,百度了一圈发现网上也有类似的错误都是构造工厂类时候报出,但是错误不相同,最后还是静下心来看看报错的错误,从上往下看,一不小心看到如下错误:
Caused by: java.lang.IllegalArgumentException: No visible constructors in classcom.liulangtao.frame.demo.config.elasticSearch.ElasticSesrchClientFactory
翻译过来就是java.lang.IllegalArgumentException引起错误,没有ElasticSesrchClientFactory的构造函数。这样小编瞬间就理解了果断将ElasticSesrchClientFactory的构造函数的private修改为public ,重启服务瞬间好了。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-11-22 11:38:22.267 ERROR 3404 --- [           main] o.s.boot.SpringApplication               : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'elasticSesrchClientFactory' defined in file

相关文章

最新文章

更多