之前学过了方法的重载,既然构造方法也是方法,那同样也是可以有重载方法的。
代码如下:
<TestMerchandiseV2.java>
MerchandiseV2 v = new MerchandiseV2(1,"床单",100, 50, 30);
v.describe();
MerchandiseV2 v1 = new MerchandiseV2(2, "被罩", 50, 30);
v1.describe();
MerchandiseV2 v2 = new MerchandiseV2();
v2.describe();
<MerchandiseV2.java>
public MerchandiseV2(int id, String name, int count, double soldPrice, double purchasingRrice ) {
this.id = id;
this.name = name;
this.count = count;
this.soldPrice = soldPrice;
this.purchasingRrice = purchasingRrice;
}
// 无进价参数的重载方法
public MerchandiseV2(int id, String name, int count, double soldPrice) {
this(id, name, count, soldPrice, soldPrice * 0.8);
}
// 无任何参数的重载方法
public MerchandiseV2() {
this(1000, "未知", 2, 0.1, 0.01);
}
public void describe() {
System.out.println("当前商品的名字是:" + this.name + " 库存个数是:" + this.count + " 进价是:" + this.purchasingRrice + "元 " + "售价是:" + this.soldPrice + "元 " + "销售一个的毛利润是: " + (this.soldPrice - this.purchasingRrice));
}
运行结果:
image.png
二、几点说明
1.构造方法同样也可以相互调用,在A方法内调用B构造方法需要是A方法体第一行调用。
- 构造方法不可以自己调用自己,否则会出现死循环。
- 当构造方法未执行完成时,不可使用成员变量
this. name - 调用构造方法使用
this()来调用 - 重载提供了多种初始对象的方式,同时可以简化重复代码










网友评论