问题描述
publicclassSquareTool{privateStringstr;privateSquareTool(){//privatestr="nothing";}privateclassContents{//privateprivatevoidf(){//privateSystem.out.println("InClassFirst'sinnerClassContentsmethodf()");}privatevoidgetStr(){System.out.println("First.str="+str);}}/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSquareToolsquare=newSquareTool();SquareTool.Contentscontents=square.newContents();contents.f();contents.getStr();}}这个代码能跑过,里面的private限定符没起作用?
解决方案
解决方案二:
private表示在当前类中可以访问,如果main写在其他类中,就会编译出错。
解决方案三:
private构造函数可以用于单态模式
解决方案四:
private私有,本类里可以直接调用
解决方案五:
up被private修饰的方法,属性,构造方法,表示在当前类中可以访问。出去这个类会受到限制
解决方案六:
你的main是private修饰的构造方法的类的主方法,是可以在本类的方法中使用的。private修饰符就是为了修饰只限于本类用于的属性或方法。所以你这个类就不能在其它类中实例化了,但是把构造方法私有化可以使用单例模式的。
解决方案七:
构造方法私有化=单例模式
解决方案八:
你在别的类中用SquareToolsquare=newSquareTool();就不行了
解决方案九:
用private相当是屏蔽了构造器
解决方案十:
引用8楼cjhui的回复:
用private相当是屏蔽了构造器
对的其他类不可以直接访问了加锁了。。
解决方案十一:
[Quote=引用1楼xyz20003的回复:private表示在当前类中可以访问,如果main写在其他类中,就会编译出错。[/Quote]是这样的
解决方案十二:
构造方法被private就无法new出这个对象实例了
解决方案十三:
但是如果内部类的构造器是private的外部类依然可以new出它来外部类可以访问内部类private修饰的方法或字段