1.构造方法带参
案例场景 现有计算机类定义如下:
public class Computer{
public String brand;//品牌
public String type;//型号
public double price;//价格
}
现要创建3个具体的计算机实例,代码如下:
public class ComputerTest{
public static void main(String[] args){
Computer c1 = new Computer();
c1.brand = "联想";
c1.type = "T430";
c1.price = 5000;
Computer c2 = new Computer();
c2.brand = "联想"; c2.type = "W530";
c2.price = 6000;
Computer c3 = new Computer();
c3.brand = "联想";
c3.type = "T450";
c3.price = 7000;
}
}
思考:以上代码存在什么问题? 每创建一个对象,都会出现重复为对象的属性赋值,这样造成大量的冗余代码,可以使用带参构造方法来进行优化
构造方法带参语法
访问修饰符 类名(数据类型1 变量名1,数据类型2 变量名2 ... 数据类型n 变量名n){}
/**
* 计算机
*/
public class Computer{
public String brand;//品牌
public String type;//型号
public double price;//价格
//如果一个类中没有定义任何构造方法,那么编译器会自动为这个类添加一个默认的无参构造方法
//如果一个类中定义了构造方法,那么编译器不会为这个类添加默认的无参构造方法
//如果在一个类中已经定义了带参数的构造方法,此时还想使用无参构造方法,那么必须将无参构造方法也定义出来
public Computer(){
}
//此时在类中定义了带参数的构造方法,那么编译器不会为这个类添加默认的无参构造方法
//构造方法的()里表示的是参数列表,这里的列表是形式参数
public Computer(String brand, String type, double price){
this.brand=brand;
this.type=type;
this.price=price;
}
}
public class ComputerTest{
public static void main(String[] args){
Computer c1 = new Computer();
c1.brand = "联想";
c1.type = "T430";
c1.price = 5000;
//调用带参构造方法创建对象时,必须注意参数列表传递的值要与构造方法定义时的形式列表一一对应
//传递的参数是实参,也就是形式参数的一个具体示例。
Computer c4 = new Computer("联想","T430",5000);
Computer c2 = new Computer();
c2.brand = "联想";
c2.type = "W530";
c2.price = 6000;
Computer c5 = new Computer("联想","W530",6000);
Computer c3 = new Computer();
c3.brand = "联想";
c3.type = "T450";
c3.price = 7000;
Computer c6 = new Computer("联想","\"T450",7000);
}
}