日期:2014-05-20  浏览次数:20689 次

java 构造函数?该传入的参数的变量···谢谢回答,麻烦咯。
[code=Java][/code]
在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,为什么传不了?我觉得应该没有问题的,谢谢

------解决方案--------------------
public Person(String name,int a)//我把age改为a。
 {
this.setName(name);
this.setAge(age);
 }

这里有错
 this.setAge(age);中的实参也应该改为a
------解决方案--------------------
this.setAge(age);中的实参也应该改为a
如果是构造函数也想穿参数的话,就需要类型匹配才可以。
------解决方案--------------------
实参与形参的问题。

形参是你在定义方法的时候的参数,比如说例子中的public Person(String name,int a),这里的name,a就是形参。方法定义的时候,里面传的应该是形参。所以把this.setAge(age);中的age改为a。

实参是调用方法时传递的参数。比如例子的Person p=new Person("Jcson!",21);这里的Jcson,21就是实际参数。调用方法时,实际参数参与运算。所以这里执行的代码应该是:
Java code

this.setName("Jcson");
this.setAge(21);

------解决方案--------------------
this.setAge(age);

改为 this.setAge(a);

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