关于#java#的问题,请各位专家解答!(开发工具-intellij-idea)

img

img


为什么报错
关于#java#的问题,请各位专家解答!(开发工具-intellij-idea)

先明白什么是构造函数,顾名思义,是构造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.namethis.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没有声明数据类型,也没有初始值,上哪能使用呢