最近评论
正在载入评论列表...
![]() |
![]() |
Language-Specific Issues
与具体编程语言相关的问题
不同编程语言在实现类的方法上有着很有意思的差别。请考虑一下如何在一个派生类中通过覆盖成员函数来实现多态。在Java中,所有的方法默认都是可覆盖的,方法必须被定义成final才能阻止派生类对它进行覆盖。在C++中,默认是不可以覆盖方法的,基类中的方法必须被定义成virtual才能被覆盖。而在Visual Basic中,基类中的子程序必须被定义为overridable,而派生类中的子程序也必须要用overrides关键字。
下面列出跟类相关的,不同语言之间有着显著差异的一些地方:
■ 在继承层次中被覆盖的构造函数和析构函数的行为
■ 在异常处理时构造函数和析构函数的行为
■ 默认构造函数(即无参数的构造函数)的重要性
■ 析构函数或终结器(finalizer)的调用时机
■ 和覆盖语言内置的运算符(包括赋值和等号)相关的知识
■ 当对象被创建和销毁时,或当其被声明时,或者它所在的作用域退出时,处理内存的方式
关于这些事项的详细论述超出了本书的范围,不过在“更多资源”一节中提供了一些与特定语言相关的很好资源。