在Person类中,定义构造函数,
然后在main函数中new的是带2个参数的构造函数“
Person p=new Person("Jcson!",21);”
 
public Person(String name,int a)//我把age改为a。
 {
  this.setName(name);
  this.setAge(age);
 }
public void setName(String name)//设置姓名方法。
 {
  this.name=name;
 }
public void setAge(int age)//设置年龄方法。
 {
  if (age>0 && age<150)
  {
   this.age=age;
  }else
   System.out.print("Error age! ");
  
 }
//我把构造函数中传的age改为a,为什么传不了?我觉得应该没有问题的,谢谢

解决方案 »

  1.   

    public Person(String name,int a)//我把age改为a。
     {
      this.setName(name);
      this.setAge(age);
     }这里有错
     this.setAge(age);中的实参也应该改为a
      

  2.   

    this.setAge(age);中的实参也应该改为a
    如果是构造函数也想穿参数的话,就需要类型匹配才可以。
      

  3.   

    实参与形参的问题。形参是你在定义方法的时候的参数,比如说例子中的public Person(String name,int a),这里的name,a就是形参。方法定义的时候,里面传的应该是形参。所以把this.setAge(age);中的age改为a。实参是调用方法时传递的参数。比如例子的Person p=new Person("Jcson!",21);这里的Jcson,21就是实际参数。调用方法时,实际参数参与运算。所以这里执行的代码应该是:this.setName("Jcson");
    this.setAge(21);在这里,实际参数替代了原来的形参的位置,去调用方法。形参出现在定义方法中,实参出现在调用方法中。两者不同。打个比方:形参只是一个带有类型的占位符,在调用方法的时候,实际参数会取代他的位置。
      

  4.   

    this.setAge(age);改为 this.setAge(a);
      

  5.   

    首先告诉你,你太有才了!!你的构造函数的形参的名字是a,你在构造函数中调用setAge时却传入age,请问age从哪里来的?这个地方你必须出传入形参a