什么编程语言支持由代理实现隐式接口?

Kotlin可以做到这一点非常巧妙的把戏:

class Derived(b: Base) : Base by b 

这使您的类Derived实现Base ,并且在Derived中未明确实现Base所有方法都会自动委派给成员b 。 我不在Kotlin编程,失去'this'指针可能是相当有限的,但它看起来像一个简单的东西,可能意味着每一种语言都应该具有的可维护性。

有代表的一些语言:

  • 的Xtend

  • 迅速

  • Groovy的

  • 允许覆盖某种丢失方法的所有语言都可以轻松地实现委托(使用通常称为missing method proxy ):即:Ruby,Python,JavaScript es6,Smalltalk

缺少使用Ruby的方法代理的示例(从此处获取 ):

 class Proxy def initialize(subject) @subject = subject end private def method_missing(method, *args, &block) @subject.send(method, *args, &block) end end proxied_array = Proxy.new([1,2,3]) puts proxied_array.size # 3 

Delphi 已经实现了关键字

  IMyIntf = interface procedure DoWork1(); procedure DoWork2(); ... end; TMyClass = class(TInterfacedObject, IMyIntf) private FIntf: IMyIntf; public property Prop: IMyIntf read FIntf implements IMyIntf; end;