1、定义产品类Product,属性包括产品名,产品ID,价格;
构造方法,包括三个参数的构造方法,分别给三个属性赋值;
定义产品名的getter访问器;定义价格的getter和setter访问器;要求命名一定要规范;所有方法的访问权限为public;
package T1;
public class Product {
String name,ID;
double price;
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price=price;
}
}
2、定义接口IElectricityFee,在其中定义方法getElectricFare,没有参数,返回值为浮点数,表示电费;
定义居民类Resident,属性有居民ID,居民地址,用电量,实现IElectricityFee接口,电费计算方法为:
用电量0–260度,每度电0.64元;
用电量超过260,但小于600度,则超过260度部分每度0.69元;
超过600度,则超过部分每度0.74元;
定义商业类Business,属性有客户ID,客户地址,用电量,实现IElectricityFee接口,电费计算方法为:
每度0.58元;
定义类Demo,属性为IElectricityFee类型的数组custs:
构造方法:参数为数组元素个数,为数组custs分配内存空间;
方法:init,为属性数组custs中每个元素创建对象,要求先显示菜单:
**********************************************
请选择:1、创建居民用户;2、创建商业客户;
**********************************************
然后根据用户的选择要求创建对应类型的对象,并输入用户的所有信息,如ID,用电量等;
方法:getSum:获取custs数组中所有元素的电费和,要求对每个元素是否为null进行判断,如果为空,抛出空指针异常,输出为空的元素在数组中的下标。
在main方法中,先创建Demo类型对象,调用其init,然后调用getSum方法获取电费和并输出。
package T2;
public interface IElectricityFee {
public double getElectricFare();
}
package T2;
public class Resident implements IElectricityFee {
String ReID,ReAddress;
double ReUsed;
Resident(String ReID,String ReAddress,double ReUsed){
this.ReID=ReID;
this.ReAddress=ReAddress;
this.ReUsed=ReUsed;
}
public double getElectricFare() {
if(0<ReUsed&&ReUsed<=260) {
return ReUsed*0.64;
}
else if(260<ReUsed&&ReUsed<=600) {
return 260*0.64+(ReUsed-260)*0.69;
}
else
return 260*0.64+340*0.69+(ReUsed-600)*0.74;
}
}
package T2;
public class Business implements IElectricityFee {
String BuID,BuAddress;
double BuUsed;
public Business(String BuID,String BuAddress,double BuUsed) {
this.BuID=BuID;
this.BuAddress=BuAddress;
this.BuUsed=BuUsed;
}
public double getElectricFare() {
return BuUsed*0.58;
}
}