编写高质量代码06--16
建议06 覆写变长方法也循规蹈矩
Java中覆写必须满足以下条件:
重写方法不能缩写访问权限;
参数列表必须与被重写方法相同;
访问类型必须与被重写方法的相同或是其子类;
重写方法不能抛出新的异常,或者超出父类范围的异常,但是可以抛出更少,更有限的异常,或者不抛出异常;
void fun(int price,int...discounts){} //父类中
void fun(int price,int[] discounts){} //子类中
建议7:警惕自增的陷阱
int count=0;
for(int i=0;i<10;i++){
count=count++;
}
System.out.println(count);
最后结果输出为0;而不是10
原因在于count++是一个表达式,是有返回值的,它的返回值就是count自增前的值,Java对自增是这样处理的,首先把count的值(不是应用)拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。
详细处理步骤如下:
1,JVM把count值,也就是0拷贝到临时变量区;
2.count加1,这时候count变为1;
3.返回临时变量区的值,注意这个值是0,没修改过;
4,返回值赋给count,count又变为0;
改进:count=count++变为count=count+1
建议8:不要让旧语法困扰你
建议9:少用静态导入
建议10:不要在本类中覆盖静态导入的变量和方法
建议11:养成好习惯,显式声明UID