首先,我对语言理论几乎一无所知,除了 Java 之外我几乎不知道任何其他语言,但我有一个我认为很酷的想法,但我需要你们告诉我:
a:为什么它很烂
b:语言 x 多年来是如何做到的
c:我的思想多么糟糕
d:以上所有
这个想法将使组合具有与代码重用相同的便利性extends
。
因此,如果您有这样的课程:
公共接口 A { 公共无效方法InA(); }
然后你有一个这样的课程:
公共类 B { 私人作曲A; 公共 B() { // 在构造函数中构造 A } }
然后你就可以这样做了:
B myB = 新 B(); myB.methodInA();
无需在 B 类中添加委托。但是你也可以像继承一样做同样的事情,即:
@Overrides 公共无效方法InA(){ // B自己的委托方法 }
缺点包括:
- 方法隐藏在源代码中,使得调用的来源不太明显,但情况也是如此
extends
- 如果组合字段共享相同的方法签名,则需要解决冲突(冲突接口如何解决这个问题?)
- 如果您想拥有多个相同类型的组合字段,那么委托给哪个字段将会有明显的冲突
- 可能还有 100 件我没想到的事情
就像我说的,我显然不是语言理论家,而且我还没有花很多时间思考这个问题,这个想法突然出现在我的脑海中,我想知道我错了多少。我只是觉得这会很酷。