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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 敗唫①輩ふ 中级黑马   /  2013-11-8 21:16  /  1072 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test{
        private int var;
        
        public Test(){
               
        }
        
        public Test (int var){
                this();//这个是构造函数,但是new Test(88)时,调用了两次构造函数,是不是
                this.var = var;//创建了两个对象!不是说,构造函数是为特定对象初始化的吗???
        }
}

2 个回复

倒序浏览
  1. package com.socket.all;


  2. public class Test{
  3.         private int var;
  4.         public static void main(String[] args){new Test(88);}
  5.         public Test(){
  6.                  System.out.println(this.var);
  7.                  System.out.println( var);
  8.         }
  9.         
  10.         public Test (int var){
  11.                 this();//这个是构造函数,但是new Test(88)时,调用了两次构造函数,是不是
  12.                 this.var = var;//创建了两个对象!不是说,构造函数是为特定对象初始化的吗???
  13.                 System.out.println(this.var == var);
  14.         }
  15. }
复制代码
你把var打印出来,你就可以明白自己的疑问,多看看基础java吧
回复 使用道具 举报
this();//这个是构造函数,但是new Test(88)时,调用了两次构造函数,是不是
这句话应该说调用了两个构造函数。因为new Test(88);显示调用带一个整型参数的构造方法,会调用public Test (int var)这个构造方法,而此构造方法的第一句:this();又显示调用的自身的空参构造方法,所以调用了两个构造函数。
this.var = var;//创建了两个对象!不是说,构造函数是为特定对象初始化的吗???
这句话有创建了两个对象吗??创建对象的关键字是new,通过new 类名(可以带参也可无参)这种方式才是创建对象!this.var=var;这句代码的作用只是给对象的成员变量赋值而已。
多看看java基础视频吧……

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马