我现在的类(class)如下:
class MyGcmListenerService : GcmListenerService() {}
GCMListenerService如下
public class GcmListenerService extends zzb {}
现在我希望扩展到另一个构造函数。 当我尝试这样做时,
class MyGcmListenerService : GcmListenerService(), PushDataReceiver {}
我得到错误
Only one class may appear in supertypelist. This type has a constructor, and thus must be initialized here
PushDataReceiver 如下
public abstract class PushDataReceiver extends BroadcastReceiver
我一直在尝试谷歌
Kotlin adding secondary constructor
不知何故,我无法就我的问题获得任何帮助。
最佳答案
与 Java 一样,Kotlin 不支持多重继承。您一次只能扩展一个类——尽管您可以实现多个接口(interface)。如果您同时需要 GcmListenerService
子类和 BroadcastReceiver
,则必须为它们创建单独的类。
解释您收到的错误消息:
Only one class may appear in supertypelist. This type has a constructor, and thus must be initialized here
此错误指出当您扩展一个类时(与实现接口(interface)时不同),您需要通过添加括号来调用其构造函数(如果它具有构造函数参数,请在这些括号内传递这些参数),就像您对另一类:
class MyGcmListenerService : GcmListenerService(), PushDataReceiver() {}
但是同样,由于您只能有一个直接父类(super class),所以这行不通。
关于android - Kotlin 扩展到第二个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921400/