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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张学永 高级黑马   /  2012-11-14 08:33  /  2060 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张学永 于 2012-11-14 13:49 编辑

我知道构造函数之间的调用是this(),或者this(参数列表)的格式,但是不太清楚什么时候会这么用呢?什么时候会用的构造函数之间的互相调用呢,求解?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
当类中的函数被另一个类调用的时候会用到。
回复 使用道具 举报
1、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
2、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this
3、在函数中,需要引用该函所属类的当前对象时候,直接用this。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.首先我觉得应该是本类构造函数内部调用时用this语句,而在子类调用父类的构造函数时用super语句。
2.当本类中构造函数内部定义的方法,被本类中的其它方法所共用时,这时为了提高代码的可重用性,以及代码的简练,可以进行this语句的调用。
3.要注意,this语句只能定义在构造函数的第一行,因为初始化要先执行。
4.以上只是我个人的理解,希望可以帮到楼主。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.构造函数可以通过this来调用。

2.this的调用必须是在函数中的第一句

3.this只能用在构造函数中,并且是在函数中的第一句。

4.局部变量可以与成员标量重名,哪个对用调用方法,this就在哪个方法中用。(引用那个对象)

5.在一个方法中我们直接使用变量名形式访问一个变量,优先寻找局部变量,没有局部变量时,自动加上this,找成员变量。

6.如果使用this。变量名,形式,那么无论有没有局部变量,都会找成员变量,哪个对象调用当前方法,就找哪个对象的变量。

7.在一个方法中可以使用this访问调用该方法的对象,可以当作实参传入的另一个方法。

class ArgsTransferDemo {

      

       public static void main(String[] args){

              int x = 5;

              fun(x);

              System.out.println(x);

              

              Person p = new Person();

              p.name = "姓名1";

              fun(p);

              System.out.println(p.name);

              

       }      

      

       static void fun(int x){

              x = 10;

       }

      

       static void fun(Person p){

              p.name = "姓名2";

       }

}



class Person {

       String name;

}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
构造方法是在产生对象时被java系统自动调用的,我们不能在程序中像调用其他方法一样去调用构造方法(必须通过关键词new自动调用它)。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。例如:     
public class Person{
        String name;
        int age;
        public Person(String name){
            this.name = name;
        }
        public Person(String name,int age){
            this(name);
            this.age = age;
        }
    }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘腾 高级黑马 2012-11-14 10:37:13
7#
本帖最后由 刘腾 于 2012-11-14 10:39 编辑
  1. //以视频中的例子为例子吧
  2. public class Person
  3. {
  4.         private String name;
  5.         private int age;
  6.         Person(String name)
  7.         {
  8.                 this.name=name;
  9.                
  10.         }
  11.         /*这是不使用构造函数的调用
  12.         Person(String name,int age)
  13.         {
  14.                 this.name=name;
  15.                 this.age=age;
  16.         }
  17.         */
  18.         //这是使用构造函数的调用
  19.         Person(String name,int age)
  20.         {
  21.                 this(name);/*这个地方之所以使用构造函数的调用是因为this.name=name这个语句已经有函数使用,并封装完了,
  22.                 我们直接拿来用就可以了,所以使用到了函数的调用,我个人的理解是this()语句的使用提高了代码
  23.                 的复用性,不知道这样的解释能否消除你心中的疑惑*/
  24.                 this.age=age;
  25.         }
  26.         public static void main(String[] args)
  27.         {
  28.                 Person p=new Person("lisi",20);
  29.         }
  30.         //如果还是不明白,建议看下毕老师视频05天的最后那个,“this关键字在构造函数中的调用”。over
  31.         
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
陈军 中级黑马 2012-11-14 13:02:15
8#
记住一点:在同一个类用this调用构造函数的理由。其实是为了提高代码的复用性。从而简化书写。



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