小乔注:java关键字this

2018-06-18 03:49:37来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

java中当一个对象创建后,java虚拟机就会给这个对象分配一个指向自己的指针,称为this。this随实例化对象而产生,因此this只用于非静态方法体内。主要有以下四点应用:

1.调用当前类的成员变量。如:this.name;//访问本类中的成员变量name

2.调用当前类的成员方法。如:this.fun(params...);//访问本类中参数为params...的成员方法fun

3.表示当前类对象的引用。如:return this;//返回当前类对象的值

4.在当前类的构造方法中调用本类的其他构造方法。如:this(params...);//调用本类中参数为params...的构造方法

下面一一附代码说明:

1.

 

public class Student { 
  String name;
  private void SetName(String name){
    this.name=name; 
 }
}

 

如上述代码,若局部变量与成员变量同名时,便显示出了this的作用。this关键字引用的便是成员变量,一目了然,便是将形参name赋给了成员变量name

2

public class Student { 
   private void out1(){
     System.out.print("123");
  }
   private void out2(){
      this.out1();
  }  
}

如上述代码,out2()方法中利用this关键字调用了成员方法out1();需要注意的是,this关键字访问类的成员变量和成员函数时不受访问权限的控制,可以访问本类中包括private修饰的所有成员变量和方法。也可以通过this访问本类的static成员,不过由于static成员可以通过类名直接访问,如果通过this来访问会有警告信息。

3.

public class Student { 
   private String name; 
   public Student setName(String name){
     this.name=name;
     return this;
    }
}  

如上述代码,调用setName方法后,将形参赋给成员变量后,return this表示返回了Student对象引用。注意,return this返回的是调用this所处方法的那个对象的引用。切勿混淆。

4.

public class Student {
    private String name;
    private char sex;
    public Student(){
        this('男');
        this.name = "周瑜";
    }
    public Student(char sex){
        this.sex=sex;
    }
}

如上述代码,其中this('男')就是在第一个构造方法中调用了第二个构造方法,即没有参数的那个调用了有参数的那个。需要注意到是,其只能放在该构造方法体内的第一行,且不支持递归调用,即不能间接或直接地调用本身。

大乔注:若该类有派生类,则类中出现的关键字this的作用需注意:

1.在调用成员方法时,如果该方法被子类重写,则调用的是子类的成员方法,未被重写,则调用父类的成员方法。

2.return this中的this始终代表的是子类对象的引用。

3.调用成员变量和构造方法时,均是父类本类的,并无变化。

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Eclipse导入web项目发布项目时报Tomcat version 7.0 only suppor

下一篇:Maven构建项目报No compiler is provided in this environment.