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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑文博 中级黑马   /  2012-5-31 11:33  /  2274 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑文博 于 2012-6-1 09:38 编辑

希望大家能不吝说说自己对构造函数的理解,作为初学者对这个比较懵。希望能够找到一个好的方法去理解记忆。
比方说对它的初始化特点吧,我就有点不理解了,每当一创建对象就会被调用一次,那需要创建对象又不想去调用这个构造函数的初始化该怎么做呢。

毕老师讲的很清楚,只是一段时间不想当再提起时头脑又是很懵。。然后又得回去重看视频。我想听听大家有什么好的方法,谢谢。


评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
构造函数呢就是为 创建实例而设计的,要创建实例就必须调用构造函数,构造函数可以是默认的也可以是自己写的。
我举了个例子:
  1. class Person
  2. {   
  3.         String name;
  4.         int age;
  5.         Person()
  6.         {
  7.                
  8.         }
  9.         Person(String name,int age)
  10.         {
  11.                 this.name=name;
  12.                 this.age=age;
  13.                
  14.         }
  15. }
复制代码
这个里呢我写了Person()这个就是默认的构造函数,如果你不写的话系统就默认调用这个,如果你显示的写构造函数了则系统就不会给我们在提供默认构造函数。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
建议把静态代码块,构造代码块和构造函数对比起来理解,那样更便于记忆:
他们三都是用于初始化,但又都有差别:
静态代码块(可以用来验证类是否加载):随着类的加载而加载,只执行一次,并优先于主函数,一般用于类的初始化。
构造代码块(定义对象共性初始化内容):给对象进行初始化,对象一建立,就运行,而且优先于构造函数执行,给所有对象进行统一初始化。
而构造函数是给对应对象进行初始化,如果不写构造函数,会有一个默认的空参数的构造函数,用于给对象初始化,但若自己写了构造函数,便不再有,因而一般在复写构造函数时都写一个空参数的构造函数,以免出错!
我以前也不太清楚,这么总结了之后,感觉还比较清晰,希望帮到你!
回复 使用道具 举报
既然是初学的话,关于复杂的就不说了,你抛开代码角度想想就行,关键是理解思想
作为类的构造函数它的最主要作用就是对类中成员初始化,举个例子说:你有一个Person类代表人
那么你实例化出来(造出来)的时候应该有名字吧,这是必须的,那么你就应该在构造函数的部分里添加你创造这个人的名字。
希望对你理解有所帮助
回复 使用道具 举报
回答这个问题可能比较啰嗦。
定义一个类的时候要定义一个类的属性方法。而这些属性和方法在书写的时候只是一个概念,需要我们通过new形成实例。这个时候往往需要初始化。
就如同汽车类定义的时候会定义轮子和发动机,这是一个概念,汽车会跑的方法也是一个概念,这些都是在类范畴。。
当定义的汽车类生成实例时,也需要做一些事情。比如属性的赋值操作,某些初始化方法执行等等。比如汽车下线开动之后发动机会转,婴儿出生后会哭一样。
这时候,谁来命令汽车发动机启动运转,谁来命令出生的婴儿会哭,就有了一定的初始化的方法,一般情况这些东西都会写在“构造函数”里面。
我的理解“构造函数”中的“构造”,并不是“构造”的并不是类,而是“构造”这个类new出的实例中的一些初始化特性。而生成实例的过程包含构造过程,所以会有默认的构造函数。当然,还有构造代码块等别的方法,也可以在特殊需求的时候达到构造的效果。

说的有点别扭,请各位同学和老师指正。
回复 使用道具 举报
说的直白点,构造函数主要就是给对象初始化的,这是实际开发中最长用的!你定义一个类实例,或者new一个类实例的时候,都会隐式地调用构造函数,构造函数可以重载的,你好好看看毕向东将的视频,很明白的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马