问题描述
请问各位亲,为什么有的class它的构造函数加了一个public关键词,而有的却没有呢?这样的不同时基于什么样的考虑呢?谢谢!
解决方案
解决方案二:
基于作用域,就类似于一个变量或者方法有四种作用域,private,default,protected,public。
解决方案三:
每一个类,就算你不写构造方法,都会有一个默认的public的空的构造方法,只不过隐藏了.这个public是定义这个构造方法,在什么情况下是否可以使用.和别的普通方法是一样的.如果你只有一个private的构造方法,那就表示,在外部,是不让别人创建这个类的实例的.如果有多个构造方法,而前面的修饰不一样,有些是public,有的是private等等,这就可以让外部在不同情况下调用不同的构造方法,或者限制其使用,之类的.....构造方法你就可以跟别的方法一样的理解,只不过这个方法是在new的时候才会使用而已....
解决方案四:
加public和默认的没什么大的区别;
解决方案五:
引用3楼u012724379的回复:
加public和默认的没什么大的区别;
+1.只有加private和protected才有区别。这两个的访问权限更小。建议你去看一下java的访问权限修饰关键字
解决方案六:
引用3楼u012724379的回复:
加public和默认的没什么大的区别;
如果你写的类是专门别人用的,又不提供工厂方法,你的类提供的功能又都是非静态方法,那别人就没法用你的类了(除非用反射创建类对象)
解决方案七:
其实,每一个Class系统都会提供一个默认的没有参数的public的构造方法,你没有写构造方法时,系统会默认你调用的是系统提供的构造方法,而当你重写构造方法时(也就是楼主所提到的public,或者不用修饰词的构造方法),当你要new一个Class的实利时,会根据你所提供的参数来调用相应的方法,而无修饰词与public修饰的构造方法作用域是一样的!
解决方案八:
楼主别想太多了,那个只是懒得写或者忘加了
解决方案九:
默认的就是public的
解决方案十:
习惯上加public吧,public和默认的其实没什么区别,更多的是publicprivate和protected之间的区别
解决方案十一:
不加public的类不能被其它包访问.
解决方案十二:
构造函数一般都是来实例化对象的。public,protected,default(就是你说的什么都没有的情况),private.这四种访问控制级别由大到小,一般来讲,构造函数用什么控制符取决于你的需求。例如像单例类,你只希望实例化一次的,不希望其他外部类对此进行实例。或是像枚举类固定实例化几个对象,他们的构造器都是private,像Object这种终极父类,就是要用public修饰,那样才能在不同包,不同子类里调用。
解决方案十三:
楼上说的很对了。。。
解决方案十四:
建议楼主看看private、protect、protected、default和public的区别
解决方案十五:
构造函数默认都是public权限的,如果没有构造函数,会默认自动添加一个不带任何参数的构造函数,构造函数前面的修饰主要看你有没有什么特殊的要求了,如果现在需要用到单利模式,那么就可以将构造函数前面的权限修饰符号修改为private,这样一来只有本类可以进行创建对象(new),外部是无法进行new关键字创建对象,在java里面,有很多的类都是属于单利模式的,比如:Runtime类(Runtime.getRuntime())以及时间类:Calendar.getInstance(),楼主可以好好去看看。
解决方案:
public,protected,private,default这些词是java保留的关键字,作用就是限制访问,public访问权限最大,protected表示受保护,private表示私有的,只能在同一个类里的才能访问,是限制最严格的修饰符,还有final,this,super都有不同的作用。
解决方案:
作用域问题,不写的话就是默认的friendly作用域,写public就是表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
解决方案:
作用域的问题,不写就是default,public的权限最小,所有用户都可以访问
解决方案:
解决方案:
一定要加PUBLIC
解决方案:
默认的是default。其实没有太大区别,每个类无需定义都有一个默认的无参构造器.
解决方案:
引用11楼u011954884的回复:
构造函数一般都是来实例化对象的。public,protected,default(就是你说的什么都没有的情况),private.这四种访问控制级别由大到小,一般来讲,构造函数用什么控制符取决于你的需求。例如像单例类,你只希望实例化一次的,不希望其他外部类对此进行实例。或是像枚举类固定实例化几个对象,他们的构造器都是private,像Object这种终极父类,就是要用public修饰,那样才能在不同包,不同子类里调用。
这个说的对。这里主要有两点知识点,第一点方法修饰符,public,protected,default(就是你说的什么都没有的情况),private.的区别;第二点,构造方法使用每个修饰符来修饰的意图是什么?这两点理解了就明白了
解决方案:
引用19楼u011629683的回复:
一定要加PUBLIC
不是一定,是看自己的方法给谁用,这无非就是作用域的问题
解决方案:
写不写public差别不太大,写不写private差别很大可以参考:http://bbs.csdn.net/topics/390919996#5
解决方案:
那个是修饰关键词,权限的问题,被不同权限修饰的buff状态不一样
解决方案:
赋予权限,有的构造方法只能在内部指定被使用。
解决方案:
引用1楼qu1210的回复:
基于作用域,就类似于一个变量或者方法有四种作用域,private,default,protected,public。
如果你没有写的话,就是默认的:default,也就是包级别(package)
解决方案:
构造方法是用来初始化变量的属性的,所以一般来说,要使用Public修饰符,但是在单态设计模式中,比如你要让用户选择一个按钮,或者一个选项,在他未完成这个选项之前,就不准他开同类的另一个按钮,这种情况下,就只能把构造方法私有化,然后通过接口来调用构造方法。