`
TonyLian
  • 浏览: 402141 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第26条】谨慎地使用重载

OO 
阅读更多

    重载是OO的一个重要特性,然而过度的重载只会带来更多的麻烦。书中一上来就举了一个通过超类与子类类型的参数来重载的例子。

 

    当我们希望根据传入参数的类型来选择重载方法时,由于Java对重载方法的选择是静态的,所以尽量避免通过有继承关系的不同类型来重载。如果一个方法的参数类型(以仅有一个参数为例)是String,而另一个重载的参数类型是int,这样是安全的。而一个是List,另一个是Collection就不安全了。因为重载(overload)方法的选择是静态的,编译时就决定的。与之形成对比的是改写(override)方法的选择是动态的,执行的时候才决定

 

    有一句忠告是“一个安全而保守的策略是永远不要导出两个具有相同参数数目的重载方法”。但这并不是一个严格要求,从其中的“保守”一词,已经能够看出。我们还是尽量避免两个有继承关系的类型作为重载参数吧,这里需要强调的是Object类型,由于它是所有其他类的超类,所以重载的时候因特别注意。

 

 

 

【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208

 

分享到:
评论

相关推荐

    C++(普通).pdf

    9. **静态数据成员**:静态数据成员属于类而不是类的任何特定对象,因此不能在构造函数中初始化,如第26题所示。 10. **多态**:在公有继承中,基类的公有成员在派生类中是可见的,但私有成员不可见,如第21题。...

    高质量C++,C编程指南

    第二章详细阐述了程序版式的规范,如空行、代码行、代码行内的空格、对齐、长行拆分、修饰符的位置、注释及类的版式。这些规范有助于保持代码整洁,减少因格式混乱导致的错误,同时也便于团队协作和代码审查。 ### ...

    Effective CSharp

    第二部分:.NET资源管理 12. 倾向使用成员初始化器而不是赋值语句。这可以减少代码量,并且使对象初始化过程更加直观。 13. 使用正确的初始化方式初始化静态类成员。静态成员应该在定义时或通过静态构造函数进行...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    11.1.2 第二步:定义事件成员 11.1.3 第三步:定义负责引发事件的方法来通知事件的登记对象 11.1.4 第四步:定义方法将输入转化为期望事件 11.2 编译器如何实现事件 11.3 设计侦听事件的类型 11.4 显式实现...

    提高C#编程水平的50个要点(C#程序员必读)

    `new`操作符可以隐藏基类的方法,但需谨慎使用。 #### 30. 尽量使用CLS-Compliant 遵循公共语言规范可以使库在多种.NET语言中兼容。 #### 31. 尽量编写短少,简单的函数 简短的函数易于理解和维护。 #### 32. ...

    c++笔试常见问题

    ### C++笔试常见问题解析 #### 一、指针初始化的重要性及注意事项 1. **何时为何需要初始化指针**: ...`*(a + 1)`表示数组的第二个元素,而`*(ptr - 1)`表示指针`ptr`指向的位置前一个元素,即数组的最后一个元素。

    MoreEffectiveC++

    - **定义**:有时候使用第三方库可以提高效率。 - **应用场景**: - 当标准库无法满足需求时。 - **注意事项**: - 选择合适的库可以节省开发时间和提高性能; - 需要评估库的质量和维护情况。 #### Item24: ...

    Google Coding Style C++

    - **类型转换**: 明确地使用类型转换,避免使用 C 风格的转换。 ##### 12. 流 (Streams) 使用流(如 std::cout 和 std::cin)来进行输入输出操作。流提供了比 C 风格的输入输出更强大的功能和更好的类型安全。 ##...

    More Effective C++(中文版)

    26. **了解并使用异常安全编程**: - 异常安全编程确保即使在抛出异常时,程序状态仍然保持一致。这通常涉及到在可能抛出异常的代码块周围使用异常安全的资源管理,如使用异常安全的构造和析构函数。 27. **使用...

    调高C#编程的50个基本技巧

    反射是一种强大但低效的技术,应当谨慎使用以避免性能瓶颈。 #### 40. 模式匹配和异常处理 使用模式匹配(如switch表达式)和适当的异常处理策略可以提高代码的健壮性和可读性。 #### 41. 遵循安全编码实践 遵循...

    编写高质量代码:改善Python代码的91个建议-中文版

    - `eval()`虽然强大但容易被恶意利用,因此应谨慎使用。 11. **使用`enumerate()`进行索引访问**:介绍如何使用`enumerate()`函数简化列表迭代过程。 - `enumerate()`可以同时获取元素及其索引,简化循环中的代码...

    Google_C++_Style_Guide

    19. **Operator Overloading**:谨慎重载运算符,确保操作符行为符合预期。 20. **Access Control**:合理使用public、protected和private,保持封装。 21. **Declaration Order**:成员变量按声明顺序初始化,...

    Java基础系列

    - `rd xxx /s`:删除名为`xxx`的目录及其子目录和文件,请谨慎使用。 - `cd xxx`:切换到名为`xxx`的目录。 - `cd ..`:返回上一级目录。 - `cd \`:返回根目录。 - `del`:删除文件,如`del *.txt`删除所有`....

    more effective c++

    谨慎使用用户定义的转换函数(Item5) 用户定义的转换函数可以使得类型的隐式转换更加方便,但也可能导致意外的副作用。例如,不恰当的转换可能导致数据丢失或引起类型不匹配的问题。因此,在定义转换操作符时,...

    c++高效编程.doc

    **4.2 复合表达式**:复合表达式的使用需谨慎,以免引入复杂度。 **4.3 IF语句**:IF语句的书写应遵循一定的规范,提高代码的可读性。 **4.4 循环语句的效率**:选择合适的循环语句可以提高程序性能。 **4.5 FOR...

Global site tag (gtag.js) - Google Analytics