先看代码
public class CH05_01 {
public static void main(String[] args){
System.out.println("没有使用到stundent类的成员变量或方法");
Student s1=new Student();
Student s2=new Student();
Student s3;
s3=new Student();
s1.show();
s2.setdata("康小爱", "A");
s2.show();
s3.name="康晓伟";
s3.score="C";
s3.show();
Student.name="许雨柔";
Student.score="A";
Student.show();
}
}
class Student{
public Student(){
name="康小月";
score="B";
}
public static String name;
public static String score;
public static void show(){
System.out.println("姓名:"+name);
System.out.println("成绩:"+score);
}
public static void setdata(String name1,String score1){
name=name1;
score=score1;
}
}
显示结果:
没有使用到stundent类的成员变量或方法
姓名:康小月
成绩:B
姓名:康小爱
成绩:A
姓名:康晓伟
成绩:C
姓名:许雨柔
成绩:A
当我把方法中的参数的名称改为和已经声明的变量的名字相同的时候
即
public static void setdata(String name,String score){
name=name;
score=score;
}
此时显示结果:
没有使用到stundent类的成员变量或方法
姓名:康小月
成绩:B
姓名:康小月
成绩:B
姓名:康晓伟
成绩:C
姓名:许雨柔
成绩:A
结论:
在类中写方法时,如果参数列表的名称和已经声明的变量的名称相同时,类生成的对象调用此方法并传入新的参数,这时方法会优先读取类中已经声明的同名变量,这样对象调用方法不管传入什么参数一直都显示的是类中的变量。