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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

亲爱的少年

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 亲爱的少年 初级黑马   /  2018-8-3 09:19  /  756 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  构造方法是用来创建一个新的对象的,与new组合在一起用,使用new+构造方法创建一个新的对象。你new一个东西的时候,实际上你调用的是一个构造方法,构造方法就是把自己构造成一个新的对象,所以叫构造方法,构造一个新对象用的方法叫构造方法。

  构造方法比较特殊,构造方法的名字必须和类的名字完全一模一样,包括大小写,并且没有返回值。如原来定义的一个person类,在类里面声明了两个成员变量id与age,这时候你可以再为这个person类定义一个它的构造方法person(int n,int i),这个方法的名字和类名完全相同,并且没有返回值,也就是在这个方法前面不能写任何的方法的返回类型修饰符,连void都不可以写。

构造方法范例:


1 public class Person {
2     int id;  //在person这类里面定义两个成员变量id和age,
3     int age=20;  //给成员变量age赋了初值为20
4
5     /**这里就是person这个类的一个构造方法
6      * 构造方法的规则很简单,和类名要完全一样,一点都不能错,包括大小写。
7      * 并且没有返回值,不能写void在它前面修饰
8      * @param _id
9      * @param _age
10      */
11     public Person(int _id,int _age ) {
12         id = _id;
13         age = _age;
14     }
15 }

  构造方法写好后就和new组合在一起使用,new的作用是构建一个新对象,创造一个新对象,所以new的时候实际当中调用的是构造方法。只有调用了这个构造方法才能构造出一个新的对象。例如:

1 public static void main(String[] args) {
2     Person tom = new Person(1, 25); // 调用person这个构造方法创建一个新的对象,并给这个对象的成员变量赋初始值
3 }
  
  下面是在main方法里面调用person构造方法时的内存分析情况:





  当方法调用完成之后,栈里面为它分配的空间全部都要消失,即把这个方法调用时分配给它的内存空间释放出来,所以这个构造方法person调用完成之后,栈内存里面分配的两小块内存_id和_age自动消失了。这样就把它们所占的空间让了出来,让其他的方法去占用。而new出来的对象则永远留在了堆内存里面。

  

  声明一个类,若没有在类中指定其构造方法(构造函数)时,编译器会为这个类自动添加形如类名( ){ }的构造函数。

如:

1 class  point{//这里声明一个类时并没有给它指定其构造方法。
2     int  x;
3     int  y;
4 }
  但在main方法里面我们却可以这样使用:

1 public static void main(String[] args){
2     point  p = new  point();
3 }
  这里这样写是可以的,当没有给这个类指明构造方法时,系统会默认地给这个类加上point ( ) { }这样一个空的构造方法。所以才可以在main方法中使用
point  p = new  point(); 实际上你调用的就是编译器默认给它加上的point ( ) { }这个构造方法,在这个构造方法当中,默认地把类里面的成员变量x和y初始值设为0。正是因为系统给它默认加上这么一个构造方法,所以才能在main方法里面调用。但要记住一点,一旦给这个类里面指定了构造方法,那么系统就不会再给这个类添加构造方法了。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马