H5W3
当前位置:H5W3 > 问答 > 正文

静态成员的赋值问题;this.value和value为何不同

输出的结果为3和33;不明白为何不同 ,为何不都是3。
求大佬解答。

public class Apple {
static int value = 33;
public static void main(String[] args) throws Exception{
new Apple().printValue();
}
private void printValue(){
int value = 3;
System.out.println(this.value);
System.out.println(value);
}
}

回答

this指代当前对象
如果方法中没重新声明value,那么this.value和value是相同的都是外部的那个value
但是方法内声明了局部变量,value就表示本方法中的value,而this.value表示外部的value

常用的还有this和super的比较,this指代当前对象,super指代当前类继承的父类
所以如果重写方法时,要保留父类逻辑的同时还要新增逻辑可以用到super

@override
public void save(Object a) {
    a.num = 10;
    super.save();
}

如果有帮到你的话请采纳下

本文地址:H5W3 » 静态成员的赋值问题;this.value和value为何不同

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址