Java中的this关键字

Java中的this关键字

this是一个在实例内部的引用。在实例内部指向实例本身,在实例内部指向实例属性。每一个实例都有自己的this。

this关键字的作用:

    1. this调用本实例中的属性(this.属性名);

例子:

public class SumPe {
    //实例变量
    private int month;
    public int getMonth() {
        return month;
    }
    //方法中的month为局部变量
    public void setMonth(int month) {
        //this在实例内部指向实例属性,用来区分局部变量与实例变量。
        this.month = month;
    }
}

如上,当成员变量和局部变量重名时,在方法中使用this,用来表示该方法所在类中的成员变量。

    1. this调用本实例中的其他构造方法(this())。注意,this调用构造方法时,只能使用在构造方法的第一行。表示调用本类其他的构造方法。

Java中,方法可分为成员方法和构造方法

构造方法

    1. 构造方法是类中一个特殊的方法,其名称必须与类名一致。构造方法没有返回类型说明。(注意,并不是void,格式是:修饰符 类名(){ })简单的说就是一个与类名相同但是没有返回类型说明的方法。
    1. 其次,构造方法是当这个被实例化(使用new关键字)时,由系统自动调用的方法。一个类实例化的过程,其实就是调用其构造方法的过程。构造方法的作用构造实例并初始化属性。构造实例即在类实例化时,就是调用构造方法的过程。类的实例化只能按类中构造方法的格式进行实例。初始化属性即针对引用数据类型的属性进行实例化
    1. 一个类必须有构造方法。一个类也必定有构造方法。当类中没有明确给出任何一个构造方法时,系统会自动增加一个构造方法。叫隐式构造方法。隐式构造方法在格式与默认构造方法一致。且隐式构造方法只在没有写构造方法时才会被添加。

构造方法的分类

  • 默认构造方法:没有参数的构造方法
  • 参数化构造方法:有参数的构造方法

构造方法的作用:

  • 实例化时必须要有配置格式的构造方法
  • 实例化时也只能使用类中提供的构造方法。

构造方法的功能:

  • 一个类中必须有一个构造方法。
  • 当new实例化类的对象时,一定调用构造方法
  • 实例化时必须按构造方法进行实例化。

代码规则:

  • 每个类中最好加一个默认构造方法
  • 再按需求生成一个有参数的构造方法
public class Employee {
    private String name;
    private int month;
    //无参构造方法
    public Employee() {
        System.out.println("无参构造");
    }
    //参数化构造方法
    public Employee(String name, int month) {
        //在构造方法的第一行使用this调用无参构造
        this();
        this.name = name;
        this.month = month;
    }
}

如上,用this();可以调用其他的构造方法。需要说明的是,在使用this调用其他构造方法的时候,至少有一个构造方法是不用this调用的。必须要有结尾才能保证不能无限循环调用,且只能在构造方法中调用其他构造方法,在其他成员方法中是不行的。

3. this调用本实例中的其他方法(this.方法名());

public class Employee {
    ...
    public String getName() {
        //使用this 调用本来中的其他方法
        System.out.println("mouth:"+this.getMonth());
        return name;
    }
    public int getMonth() {
        return month;
    }
    ...
}

如上,this还可调用本实例中的其他方法。

4. 调用当前对象

//定义类
class Employee{
 public void getInfo(){
  System.out.println("Employee的引用:" + this) ;
 }
}
//调用getInfo方法
public class test{
 public static void main(String args[]){
     // 调用构造实例化对象
  Employee test1 = new Employee() ;
  //调用getInfo
  test1.getInfo();
 }
}

返回结果:Employee的引用: test10.Employee@4554617c

发表评论

关闭菜单