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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

万青

初级黑马

  • 黑马币:0

  • 帖子:11

  • 精华:0

© 万青 初级黑马   /  2013-11-5 17:52  /  1137 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法主要用于初始化实例的状态 构造发放只有在创建实例时被隐含调用

疑问 构造方法是程序一开始就执行能还是等实例建立是被调用才执行?
       什么是隐含调用
      构造方法初始化实例的状态到底有什么作用呢?

谢谢大家里

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
在new 的时候就调用了
初始化实例的状态 就是在刚开始的时候就可以在构造函数内对实例进行初始化(如:对成员变量的赋值,调用函数等)
不用再new 完之后,在对实例赋值


类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
比如 Object obj = new Object(参数);
这个参数就是指构造方法的参数,让你指定一个构造方法,然后创建实例并调用这个构造方法
隐含调用就是说这是创建实例后就会自动调用的方法,不需要你手动调用,你也不能阻止它被调用
作用通常是给字段赋值
常见的比如:Person p = new Person("张三", 29);
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
构造代码块在每一次构造对象的开始执行,每构造一次都会执行一次。其与构造函数的区别是构造代码块无论针对所有的对象初始化都会执行,构造函数只会和相匹配的函数一致时才会执行。不管你调用无参构造函数,还是有参构造函数,都会优先执行构造代码块。 构造代码块是给所有对象进行统一初始化。构造代码块中定义的是不同对象共性的初始化内容。
回复 使用道具 举报
不是程序一开始就执行,new 一个对象时,先会在堆内开辟个空间,分配其一个地址,然后再对内存建立对象的特有属性,并进行默认初始化,int = 0等各种,或者是已有定义进行显示的初始化,然后再调用对象的构造函数,将实参传入,实现初始化操作。
  1. //Person类
  2. class Person
  3. {
  4.         String name = "小小";
  5.         int age = 30;
  6.     Person(String name, int age){
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }
  10. }

  11. class Test
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 Person p = new Person("张三",32);
  16.         }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
帖子已重新分类,若仍有疑惑,可重新提问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马