use*_*097 14 java smalltalk interface
我已经在Smalltalk中编程了一段时间,但我从来没有真正需要接口来实现任何东西.那为什么Java等语言不能摆脱接口?它只是Smalltalk还是其他语言不需要接口?
Chu*_*uck 24
因为Java是静态类型而Smalltalk不是.当您不声明类型并且您的变量不会被类型化时,接口不会用于任何目的.但是在像Java这样的静态类型语言中,它们非常方便,因为它们允许您拥有一个变量,其类型由对象实现的方法而不是其类来定义.它让你更接近动态类型Smalltalk原生而不放弃类型检查的好处.
这是一个多态问题:在Java中你有静态类型,因此你需要知道你的对象可以回答哪些消息...在Smalltalk(和其他非静态语言)中你只需要实现正确的方法来获得多态性.
例如:
这也意味着你可以拥有多态对象而不属于同一层次结构......多继承,mixins和其他方法(Pharo上存在特征)只是重用技术,而不是设计约束.
这种做事方式通常被称为"鸭子打字"......请参阅:http://en.wikipedia.org/wiki/Duck_typing