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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java语言允许一个构造方法委托另一个构造方法完成对象的初始化工作,并且这种委托是通过this关键字完成的。
如例子:
class Person{
  public Person(){
   this("jack");
  }
  public Person(String name){
   this("jack",12);
  }
  public Person(String name,int age){
   //初始化代码块
}
}
这好像真心不理解!!!

4 个回复

倒序浏览
同学,不要想复杂了,无非就是调用方法而已
在main方法中创建对象时 , 就调用了无参的构造函数, 而在无参构造函数中又调用了带 name 的构造函数, 在这个构造函数中又调用了带  name 和 int 的构造函数, 由最后个构造函数来实现属性的初始化。
下面有个图,就是调用的过程

回复 使用道具 举报
你先要理解为什么要出现委托,委托就是简化一些代码或者解除程序间的耦合性,其实这种完全可以用继承,实现,调用等等很多方法来代替,引用一段话
“当然,不使用委托和事件我们仍然可以设计出解耦的类,然而却会增加很多的类、接口以及关联等等,增加了代码量和程序的逻辑复杂性”
就像你说的例子,如果不使用委托,我们每一个重载的构造函数在初始化对象时,都需要写一堆的构造代码块,而委托——只用调用构造方法就可以,只需要写一次构造代码就可以
回复 使用道具 举报
楼主看了完视频了吗
回复 使用道具 举报
恍然大悟啊,我想的太多了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马