这个问题在这里已有答案:
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`}
编写this.name = name
的目的是什么,如果我在getName方法上返回“name”而不是“this.name”,有什么区别吗?我想我理解this.name = name
然而澄清是赞赏。
写“this.name = name”的目的是什么
我认为你的意思是在setName
。在setName
中,this.name
是你的实例变量(“field”),而name
是setName
接受的参数。所以this.name = name
使用参数的值设置实例字段的值。
如果我在getName方法上返回“name”而不是“this.name”,有什么区别吗?
不,因为name
中的范围中没有任何getName
参数或局部变量,所以Java编译器知道你的意思是name
实例变量。 (即使不需要,也不包括this
,或者在不需要时使用name
,是一种风格选择。)
this.name
引用方法中定义的局部变量名称。 name
指的是类中的变量集。
这用于使编译器能够区分具有相同名称的变量集。
这是在有阴影时完成的,你有name
变量声明两次,一个在方法中作为参数或局部变量,其他作为类的成员,在方法变量成员中被参数变量this.name
遮蔽,所以要访问它你必须指定name
指的是成员变量name
。
因此,在方法中,this.name
变量指的是name
指成员变量private String name;
public void setName(String name) {
this.name = name;
}
的参数。所以阴影得到了解决。
qazxswpoi
如果局部变量与实例变量具有相同的名称,那么局部变量将隐藏实例变量,您必须使用“this”关键字才能访问隐藏的实例变量。