先明白什么是构造函数,顾名思义,是构造java对象的调用函数,能初始化java对象的属性,即name,price。所以你在写的时候要知道如何初始化信息,car有name和price属性,构造函数要初始化这些属性的话,就可以把传到构造函数中的name和price参数值赋值给car的name和price属性,这样你就得到一个具有具体name和price的car对象。
那么,构造函数如何写呢?
首先你得明白,构造函数的两个参数
Car(String name, double price)
name和price是用来接收外部调用传给car对象的值的接收参数,表示你要把name="宝马"和price=323233.32的参数值给一个新的car
那把参数值放在了这两个变量(name,price)中,接下来就要把这两个值赋值给car的两个属性name和price
对象的构造函数中,可以通过this.name
和this.price
获取,所以,赋值语句可以这么写:
this.name = name;
this.price = price;
所以完整的构造函数就是这么写的
public Car(String name, double price){
this.name = name;
this.price = price;
}
你这 n , p 都没有定义...... 方法内获取不到,全局也没有定义,自然报错 alt + insert 选择 construct 建议看看人家生成的
n,p,没有定义,按你这个逻辑,应该把方法里面改成这样
public Car(String n,double p){
System.out.printn("有参数构造器被调用了");
name=n;
price=p;
}
或者使用this.name this.price 来确定构造函数赋值属性,这样:
public Car(String name,double price){
System.out.printn("有参数构造器被调用了");
this.name=name;
this.price=price;
}
这个有参构造方法中,内容应该是:
// 等号左边,使用 this,表示引用对象的变量name;等号右边,没有使用this,表示引用方法参数 name
this.name = name;
this.price = price;
右键点击Generate或者直接Alt+Insert
然后选择Constructor
看看系统自动生成的构造方法是个啥样子,对比一下
基本数据类型可以是直接赋值使用,
对象需要初始化赋值使用,
n,p没有声明数据类型,也没有初始值,上哪能使用呢