A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-4-1 11:01  /  1598 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hg3093483 于 2013-4-1 18:44 编辑

构造函数是在什么情况下用呢,感觉可有可无啊?请给小弟详细解释一下。谢谢啦。

顺便问下:我要随机一个40到100的整数,为什么不是60而要在61当中随机呢?
       Random ran = new Random();
            int  a = ran.nextInt(61)+40;

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
张熙韬 + 1 + 3

查看全部评分

7 个回复

正序浏览
每一个类都有一个构造函数。
我们要是不写的话,会默认的从父类继承一个。
构造函数呢,有两种,一种是无参构造,一种是有参构造。
那么当你使用无参构造函数建立对象时,就需要用set/get进行赋值取值了。
那当你使用有参构造函数建立对象时,直接在建立对象时进行赋值就可以了。
//无参构造
        Poker(){}

        //有参构造
        Poker(String color, String number){
                this.color=color;
                this.number=number;
        }

1,Poker p = new Poker();
2,  Poker p = new Poker("红色","A");
那第二种是不是使对象的初始化很方便呢!




第二个问题是:

int  a = ran.nextInt(61)+40;

这里呢,ran.nextInt只能是左边取值从0开始,而右边呢是小于61的,也就是说肯定取不了61了,只能取60.



评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
构造函数在创建对象时用。用于对象的初始化。 必须有构造函数,如果没有显示的定义。编译器会悄悄地加入一个默认无参构造函数。
回复 使用道具 举报
本帖最后由 HM周一帆 于 2013-4-1 17:28 编辑

看看 对理解有帮助
回复 使用道具 举报
首先明确两点(1)继承的原则:子类继承父类的成员变量;子类继承父类的除构造方法之外的成员方法,换句话说,也就是子类不能继承父类的构造方法。(2)构造函数的存在,首先便是为了创建对象并进行初始化。
子类可以用super调用父类的构造函数,而当一个子类没有声明自己的构造方法时,java会默认通过调用 super调用其父类无参数的构造方法,从而子类得以创建对象。
所以,它的存在是上帝式的存在哦。。
回复 使用道具 举报
王亚东 发表于 2013-4-1 11:55
构造函数是必须要有的,自己不显式写出来的话,编译器默认从父类继承一个无参构造函数。
当需要通过构造函 ...

谢谢,豁然开朗
回复 使用道具 举报
构造函数是必须要有的,自己不显式写出来的话,编译器默认从父类继承一个无参构造函数。
当需要通过构造函数赋值初始化一些操作时,需要自己写带参数的构造函数,只是简单的创建对象的话,直接使用默认的就可以了,所以感觉可有可无。
第二个:ran.nextInt(61)是随机0到60.9999无穷,精确到int就是0到60,如果使用60,实际只到59

评分

参与人数 1黑马币 +1 收起 理由
影响力147753321 + 1 赞一个!

查看全部评分

回复 使用道具 举报
假设对象是游戏  构造函数就是WASD 空格 鼠标左右键的默认设置

没有也行 但是每个人安装完游戏都要自己设置一遍
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马