首页 > 代码库 > Python, Java, C++, Perl 面向对象思想比较
Python, Java, C++, Perl 面向对象思想比较
面对对象语言的设计哲学通常分为以下两种。
- 第一种思路是基类的作者定下一系列的规则,规定使用该基类的人(派生类的作者)可以干什么事,不能干什么事。
C++,和 Java 就是这一阵营的主要代表。比如说,C++中类定义中的 public, protected, private, virtual 等关键字就是
所谓的规则,规定了类的用户可以使用的成员,必须继承接口,或者实现等等。
这些规则强制类的用户调用或使用基类作者所允许的成员。
这样的好处在于,当错误使用发生的时候,编译器会发出牢骚,进而阻止错误的发生。
然后在保证正确性的前提下,付出的代价呢? 这些规则必然带来一定的开销。就比如在马路上的交警,并不是所有人都需要交警来确保我们不会超速。
- 第二种思路如下:以 Python 和 Perl 为例,利用别处的 base class / package / module 的程序员被认为能够正确地使用基类(不会超速)。
因此,基类的作者也就不许要规定那些成员是 public, private or protected 等。
好处当然是 开发更快,更加有效。但是这有一个前提,基类的作者必须对用户有足够的信任。
Note: 保证正确性的任务从 基类作者,编译器 转移到了用户
对于编程来说,绝大部分使用别人的代码的程序员都会自觉地遵守规矩,即便如果他们想犯错,编译器并不会组织他们。
因此,Python 和 Perl 的面向对象哲学能够导致 类的原作者和类的使用者更快,更短的编码(前提——他们都是理性的人,不想犯错)
当然,在一些错误的代价极高的领域(银行,核,国防应用等),应该采用 C++, Java 那样的警察巡逻哲学。
Reference:
http://www.wellho.net/mouth/831_Comparison-of-Object-Oriented-Philosophy-Python-Java-C-Perl.html
Python, Java, C++, Perl 面向对象思想比较
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。