Per*_*der 14 oop dynamic-languages interface
令我惊讶的是,我对Ruby和Python等动态语言产生了更多的兴趣.声称它们是100%面向对象的,但是当我阅读几个基本概念(如接口,方法重载)时,缺少运算符重载.它是以某种方式内置在封面下还是这些语言不需要它?如果后者是真的,那么他们100%面向对象?
编辑:基于一些答案,我看到Python和Ruby都可以进行重载,Ruby 1.8.6和Python 2.5.2就是这种情况吗?
Ros*_*ant 18
动态语言使用duck typing.任何代码都可以在支持这些方法的任何对象上调用方法,因此接口的概念是无关紧要的.事实上,Python确实支持运算符重载,Ruby也是如此.
无论如何,您似乎专注于对面向对象编程不重要的方面.主要关注的是封装,继承和多态等概念,它们在Python和Ruby中都是100%支持的.
and*_*dri 17
由于后期绑定,他们不需要它.在Java/C#中,接口用于声明某些类具有某些方法,并在编译期间进行检查; 在Python中,是否在运行时检查方法是否存在.
Python中的方法重载确实有效:
>>> class A:
... def foo(self):
... return "A"
...
>>> class B(A):
... def foo(self):
... return "B"
...
>>> B().foo()
'B'
Run Code Online (Sandbox Code Playgroud)
它们是面向对象的吗?我会说是的.它更多的办法的事情,而不是如果有具体的语言具有的特征X或功能ÿ.
| 归档时间: |
|
| 查看次数: |
8820 次 |
| 最近记录: |