一个关于构造函数的小问题

问题描述

请问各位亲,为什么有的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修饰符,但是在单态设计模式中,比如你要让用户选择一个按钮,或者一个选项,在他未完成这个选项之前,就不准他开同类的另一个按钮,这种情况下,就只能把构造方法私有化,然后通过接口来调用构造方法。

时间: 2024-09-16 11:59:15

一个关于构造函数的小问题的相关文章

c++-一个关于递归的小程序,理解不了其输出结果。。。。。

问题描述 一个关于递归的小程序,理解不了其输出结果..... 一个c++递归的小程序,其输出结果理解不了,请问这个递归的基例是"cout<<endl;"这个吗? void f(char ch){ if (('A' <= ch) && (ch <= 'H')){ f(ch - 1); cout << ch; } else cout << endl; } int main(){ f('C'); } 输出结果为: (空一行) A

HTML5实现一个能够移动的小坦克示例代码

HTML5一词想必大家早已如雷贯耳,其功能很强大,本文为大家介绍下通过其实现一个能够移动的小坦克,具体如下,喜欢HTML的朋友可以参考下     复制代码 代码如下: <!DOCTYPE html> <html> <head> </head> <body onkeydown="changeDirect()"> <canvas id="tankMap" width="500px" h

SQL数据库上面显示一个绿色向上的小箭头是怎么回事?也无法访问数据库了,有什么办法吗?

问题描述 SQL数据库上面显示一个绿色向上的小箭头是怎么回事?也无法访问数据库了,有什么办法吗? 解决方案 sql 有一个browser服务 这个是1434端口的 解决方案二: 你那里是sqlserver客户端吗 你看看sqlservernetmanager里的网络配置1433开了吗 解决方案三: 数据库服务是否启动,端口是否在侦听,防火墙是否拦截请求

mfc-C++6.0一个关于static的小问题

问题描述 C++6.0一个关于static的小问题 static可以通过拖动来滚动上面的绘图么?重新绘图的定位是怎么样的,MFC 解决方案 scrollviewhttp://blog.csdn.net/scyatcs/article/details/7942585 解决方案二: 可以,但是需要给static手动的绑定一个滚动条才可以,重绘的本质就刷新界面的同时,改变绘图的点坐标,定位的话可以根据滚动条当前位置对绘图的坐标进行一个计算和显示 解决方案三: 省事儿点的方式是直接在单文档程序中绘图,这

一个JavaScript的求爱小特效_javascript技巧

这里面做了一个JavaScript的求爱小特效,效果如下: 不仅能出现下面的图的效果,还可以让这个图形跟随着鼠标转动哦,这里面只是一个简单的没有修饰的小例子,基于这个例子可以让求爱,更加好玩了.闷骚男们,是不是可以给你的小萝莉发个这样的网页啊.给力的. 贴上code吧: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert t

mysql-求大神帮忙调试一个Struts+MySQL的小项目

问题描述 求大神帮忙调试一个Struts+MySQL的小项目 该软件要求采用Struts2+MYSQL方式实现,能够快速查询车源信息. 能够准确填写发货单. 能够实现实现发货单查询. 能够实现对回单处理. 能够对车源信息进行添加,修改和删除. 能够对客户信息进行管理. 项目是我照着资料书上敲的,每次运行都显示连不上数据库,哪位大神愿意腾出时间的,我就把项目还有数据库的sql脚本发给您,自己是个新手,求大神们多多指教了. 解决方案 你看看数据库的驱动引入了吗,然后看看用户名和密码是不是打错了,把连

android-如何在每一个EditText中放入小的行线?

问题描述 如何在每一个EditText中放入小的行线? 我想在 Edit Texts 里添加小的行,照下面的样子,如何实现? 解决方案 看看你要找的是不是这个http://blog.csdn.net/yhm2046/article/details/9183673 解决方案二: 就是替换下backGround的selector就好了

for-请教各位 一个简单的 java 小问题

问题描述 请教各位 一个简单的 java 小问题 int arr[]={1,2,3,4,5,6,7,8,9,10}; int i,temp; for(i=0;i<10;i++){ } System.out.println("a"+i); temp=arr[0]; for(i=0;i<9;i++){ arr[i]=arr[i+1]; } System.out.println("b"+i); System.out.println("c"+

有一个关于Java的小题目,做了好久做不出来,还请大神帮我!

问题描述 有一个关于Java的小题目,做了好久做不出来,还请大神帮我! 请大家帮帮我,明天就要交作业了!5555555 解决方案 哪里做不出来,,,说下 解决方案二: 这是小题目么我想问....85分 解决方案三: 这都是一个功能了好不?关键你这也没说你哪儿不会啊 解决方案四: 页面不会写还是后台不会?你总得说清楚啊 解决方案五: 如果你搭好了框架,还是来张项目目录结构图来看看先