零基础新人请教一个关于java参数的问题,请高手们不吝赐教,谢谢

代码中“位置一”处的“name”和“位置二”处的“name”,在代码运行时为什么不会混(我总是理解成应该写为name1,name2 这样以区分),是什么原理?
public class Demo{
public static void main(String[] args) {
Dog obj = new Dog("花花", 3);
obj.say();
}
}
class Animal{
String name;
public Animal(String name){ `````````````````位置一````````````````````
this.name = name;
}
}
class Dog extends Animal{
int age;
public Dog(String name, int age){ `````````````````位置二``````````````````
super(name);
this.age = age;
}

public void say(){
System.out.println("我是一只可爱的小狗,我的名字叫" + name + ",我" + age + "岁了");
}
}

这是因为java对函数中的变量名的解释有一个优先级顺序:函数参数和局部变量 > 类成员变量。
对于位置一处,显然this.name是不会有歧义的,这个name一定指的是类成员变量。而等号右边的name则有两种解释,一个是函数参数,一个是类成员变量;按照优先级,name解释为函数参数。
不过,best practice是题主自己的理解,给变量起不同的名字可以保持代码清晰可读。也就是说,如果是我们自己写代码,最好不要像提问代码中那样。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答