改善Java程序的151个建议 6-10章

改善Java程序的151个建议 6-10章

6. 覆写变长方法也循规蹈矩

覆必须满足的条件

  • 重写方法不能缩小访问权限
  • 参数列表必须与被重写方法相同
    • 参数类型相同
    • 参数数量相同
    • 参数顺序相同
  • 返回类型必须与被重写的方法相同或是其子类
  • 重写方法不能抛出新的异常,或者超出父类范围的异常,但是可以抛出更少,更有限的异常或者不抛异常

反面示例

ia-20210731140805907

精彩分析

imae-20210731141243435

7. 警惕自增的陷阱

试问count = ?

image-20210731145028161

答案分析

8. 不要让旧语法困扰你

9. 少用静态导入

  • 静态导入是把双刃剑
  • 正确使用,可减少了代码量,而且代码的可读性也提高了,这也是静态导入用到正确地方所带来的好处
  • 使用不当,会使程序混乱,增加阅读难度

使用原则

  • 不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
  • 方法名是具有明确、清晰表象意义的工具类。
    • 何为具有明确、清晰表象意义的工具类?
      • 示例
        • image-20210731150322917

10. 不要在本类中覆盖静态导入的变量和方法

如果一个类中的方法及属性与静态导入的方法及属性重名会出现什么问题呢?

  • 编译不会报错
  • 但是,不知道具体调用了哪个方法
  • 因为编译器有最短路径原则

呢?

  • 编译不会报错
  • 但是,不知道具体调用了哪个方法
  • 因为编译器有最短路径原则

因此,如果变更一个被静态导入的方法,最好的办法是在原始类中重构,而不是在本类中覆盖。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞一下鼓励

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值