面向对象——this 关键字

this 关键字在程序中的三种常见用法。

(1)当成员变量和局部变量重名,可以用关键字this区分

通过this关键字可以明确地访问一个类的成员变量,解决与局部变量名称相同的问题。示例代码如下:

public class Cat {
  String color;
  public Cat (String color) {
    this.color= color;
  public int getColor() {
    return this.color;
  }
}

在上面的代码中,构造方法的参数被定义为color,它是一个局部变量,在类中还定义了一个成员变量,名称也是color。在构造方法中如如果使用color,则访问局部变量,但如果使用this. color,则访问成员变量。

(2)通过this关键字调用成员方法

具体示例代码如下:

public class Cat {
  public void show() {
  }
  public void run() {
    this. show();//使用this关键字调用show()方法。
    //此处的this关键字可以省略不写
    //即在上面的代码中,写成this.show()和show()效果是完全一样的。
  }
}    

(3)通过this关键字在构造函数中调用其他构造函数

构造方法在实例化对象时被JVM自动调用,在程序中不能像调用其他方法一样调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2…])”的形式调用其他构造方法。

package study.example;
//定义两个重载的构造方法
public class Cat {
  public Cat() {
    System.out.print1n ("无参数的构造方法执行了...");
  }
  public Cat (String color) {
    this();//调用无参数的构造方法
    System. out. print1n ("有参数的构造方法执行了...");
  }
}  

下面创建测试类Example,调用有参数的构造方法,如下所示。

package study.example;
public class Examp1e {
  public static void main(String[] args) {
    Cat c= new Cat ("red");//实例化Cat对象
  }
}

执行后的输出结果:

无参数的构造方法执行了…
有参数的构造方法执行了…

从运行结果中可以看出,先执行了无参数的构造方法,之后再执行有参数的构造方法。
注意,使用this关键字调用其他构造方法时只能出现在构造方法中,并且只能位于构造方法的第一行且只能出现一次
将调用的构造函数放在后面执行,编译时就会提示错误。因为其他初始化要先执行,否则会破坏函数中的其他语句,覆盖我们需要传进去的参数,而且我们定义的函数是封装起来的。
另外,不能在两个构造方法中使用this相互调用,否则会出现编译错误

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值