黑马程序员技术交流社区

标题: thisi语句,构造函数之间的调用。 [打印本页]

作者: 张学永    时间: 2012-11-14 08:33
标题: thisi语句,构造函数之间的调用。
本帖最后由 张学永 于 2012-11-14 13:49 编辑

我知道构造函数之间的调用是this(),或者this(参数列表)的格式,但是不太清楚什么时候会这么用呢?什么时候会用的构造函数之间的互相调用呢,求解?
作者: 王震阳老师    时间: 2012-11-14 08:40
当类中的函数被另一个类调用的时候会用到。
作者: 李桐    时间: 2012-11-14 09:01
1、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
2、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this
3、在函数中,需要引用该函所属类的当前对象时候,直接用this。
作者: 刘菲    时间: 2012-11-14 09:09
1.首先我觉得应该是本类构造函数内部调用时用this语句,而在子类调用父类的构造函数时用super语句。
2.当本类中构造函数内部定义的方法,被本类中的其它方法所共用时,这时为了提高代码的可重用性,以及代码的简练,可以进行this语句的调用。
3.要注意,this语句只能定义在构造函数的第一行,因为初始化要先执行。
4.以上只是我个人的理解,希望可以帮到楼主。
作者: 聽聽我dē❤    时间: 2012-11-14 09:43
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;

}

作者: 聽聽我dē❤    时间: 2012-11-14 09:44
构造方法是在产生对象时被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;
        }
    }
作者: 刘腾    时间: 2012-11-14 10:37
本帖最后由 刘腾 于 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. }
复制代码

作者: 陈军    时间: 2012-11-14 13:02
记住一点:在同一个类用this调用构造函数的理由。其实是为了提高代码的复用性。从而简化书写。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2