为什么Python设计者决定子类的__init__()方法不会__init__()像其他语言那样自动调用超类的方法?Pythonic和推荐的成语是否真的如下?
class Superclass(object):
def __init__(self):
print 'Do something'
class Subclass(Superclass):
def __init__(self):
super(Subclass, self).__init__()
print 'Do something else'
Run Code Online (Sandbox Code Playgroud) C++中委托的一般概念是什么?它们是什么,它们如何使用以及它们用于什么?
我想首先以"黑匣子"的方式了解它们,但是关于这些事情的内容的一些信息也会很棒.
这不是最纯粹或最干净的C++,但我注意到我工作的代码库有很多.我希望能够理解它们,所以我可以使用它们,而不必深入研究可怕的嵌套模板.
这两个代码项目文章解释了我的意思,但不是特别简洁:
是否可以使用我的个人网站/博客登录使用openid的网站,并委托我的Google帐户?
好的,我在SO上搜索了这个问题,但没有好的答案.花了一些时间后,我想出了如何做到这一点.我将自己回答这个问题,作为分享它的一种方式.
我需要创建一个基类,它实现了许多方法的接口,例如下面的例子.
是否有更简单的方法来委派这些方法调用而无需创建大量重复方法?
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
public MultipleInterfaces() {
if1 = new ImplementingClassOne();
if2 = new ImplementingClassTwo();
}
@Override
public void classOneMethodOne { if1.methodOne(); }
@Override
public void classOneMethodTwo { if1.methodTwo(); }
/** Etc. */
@Override
public void classTwoMethodOne { if2.methodOne(); }
@Override
public void classTwoMethodTwo { if2.methodTwo(); }
/** Etc. */
}
Run Code Online (Sandbox Code Playgroud) 我面临着一个持续的问题,即彼此区分授权,组合和聚合,并确定最好使用一个而不是另一个的情况.
我已经查阅了Java OO分析和设计书籍,但我的困惑仍然存在.主要解释是:
委派:当我的对象使用另一个对象的功能而不改变它.
组成:我的对象由其他对象组成,而这些对象在我的对象被销毁之后又不能存在 - 垃圾收集.
聚合:我的对象包含其他对象,即使在我的对象被销毁之后也可以存活.
是否有可能有一些简单的例子来说明每个案例,以及它们背后的原因?除了我的对象只是引用另一个对象之外,还能展示这些示例吗?
我正在通过源码查看Android中的SensorManager,发现当你将一个监听器SensorEventListener的SensorManager传递控制注册到一个ListenerDelegate.
我只以此为例.我阅读了关于委托编程的维基百科文章,但我仍然不确定其目的.为什么要使用'委托'?它如何帮助程序的控制流程?使用(或不使用)的缺点是什么?与听众一起使用最实用吗?
编辑:ListenerDelegate在第487行,所讨论的方法在第1054行附近.
任何人都可以解释的意义someViewController.delegate = self和self.delegate?他们在哪里帮助我们?
我知道有@inheritDoc,但它只适用于覆盖其他方法.
我有几个具有许多委托方法的类(不会覆盖其他方法).
他们的Javadoc可以"继承"(更确切地说:复制)吗?
/** here I need the copy of wrappedMethod's Javadoc */
public void delegateMethod(Object param){
innerSomething.wrappedMethod(param);
}
Run Code Online (Sandbox Code Playgroud) delegation ×10
java ×4
delegates ×3
inheritance ×2
oop ×2
aggregation ×1
android ×1
c++ ×1
cocoa ×1
composition ×1
google-oauth ×1
interface ×1
javadoc ×1
objective-c ×1
openid ×1
protocols ×1
python ×1
subclass ×1
superclass ×1
swift ×1