在这种情况下,使用this.name或name有什么区别?

时间:2018-10-10 10:47:53

标签: java

library(dplyr)
df1 <- filter(df, Mac1 > 0, Mac2 > 0, Mac3 > 0, Mac4 > 0)

编写package holinheritation2; import java.util.Scanner; public class Inheritation2 { public static void main (String args[]) { Animal wolf = new Animal(); Scanner scanner = new Scanner(System.in); String name = scanner.next(); wolf.setName(name); if (wolf.getName().equalsIgnoreCase("Kobe")) { System.out.println("You are a wolf called Kobe!"); } } } package holinheritation2; import java.util.Scanner; public class Animal { private String name; private int age; public void setName(String name) { this.name = name; } public String getName() { return this.name; } `enter code here`} 的目的是什么,如果我在getName方法上返回“ name”而不是“ this.name”,有什么区别?我想我了解this.name = name,但请您澄清一下。

4 个答案:

答案 0 :(得分:0)

  

写“ this.name = name”的目的是什么

我假设您的意思是setName。在setName中,this.name是实例变量(“字段”),而namesetName接受的参数。因此this.name = name使用参数的值设置实例字段的值。

  

如果我在getName方法上返回“ name”而不是“ this.name”,有什么区别吗?

否,因为在name的范围内没有任何getName参数或局部变量,因此Java编译器知道您的意思是name实例变量。 (即使不需要,也总是包含this,或者在不需要时不使用它,这是一种样式选择。)

答案 1 :(得分:0)

在存在阴影的情况下执行此操作,您将name变量声明了两次,一个在方法内作为参数或局部变量,另一个作为类的成员,在方法变量成员内被参数变量{{1 }},因此要访问它,必须指定name,它引用成员变量this.name

因此,方法name内的变量指的是参数,其中name指的是成员变量this.name。 这样就解决了阴影问题。

name

答案 2 :(得分:0)

name引用方法中定义的局部变量名称。 this.name引用该类中设置的变量。

使用此命令是为了使编译器能够区分具有相同名称的变量。

答案 3 :(得分:0)

如果局部变量与实例变量具有相同的名称,则局部变量将隐藏实例变量,并且您必须使用“ this”关键字才能访问隐藏的实例变量。