我刚刚开始用Kotlin来试验Android应用程序。我只想像这样继承应用程序类:
class SomeApp : Application {
}
但编译器提出了警告:
建议将其改为:
class SomeApp : Application() {
override fun onCreate() {
super.onCreate()
}
}
我在文档中读到了主构造函数和辅助构造函数。所以如果超级类有一个主构造函数,那么有必要在这里写吗?就像应用程序类有自己的构造函数一样
public Application() {
super(null);
}
那么就有必要为派生的?或者我不能像Java那样做:
class SomeApp : Application {
constructor SomeApp(){
super();
}
}
或者这个错误暗示了别的什么?有人能详细解释一下吗?我对这门语言非常陌生,这对我来说看起来很奇怪。
编辑:在java中,我可以做以下事情:类某些应用程序扩展应用程序{}
它有隐式构造函数,所以我不必编写:class SomeApp扩展应用程序{public Application(){super();}}
但是在kotlin中,我必须像下面这样定义空构造函数:
类SomeApp:Application(){}
?
你不需要
class SomeApp : Application() {
constructor SomeApp(){
super();
}
}
因为这是等价的。如果类有一个主构造函数,则可以(而且必须)使用主构造函数的参数在那里初始化基类型。
class SomeApp : Application() {
}
这在java中也相当于
class SomeApp extends Application {
public SomeApp(){
super();
}
}
这与主要/次要构造函数无关。
在JVM(以及几乎任何其他地方)上,当您创建SomeApp
在Java中,语法如您所说:
class SomeApp : Application {
constructor SomeApp(){
super();
}
}
这里必须声明一个构造函数
,然后必须调用超类的构造函数。
在Kotlin中,概念完全相同,但语法更好:
class SomeApp() : Application() {
...
}
在这里,您声明了一个不带参数的构造函数SomeApp()
,并说它调用Application()
,在这种情况下不带参数。这里的Application()
与java代码片段中的super()
具有完全相同的效果。
在某些情况下,可以省略一些括号:
class SomeApp : Application()
错误文本显示:此类型有一个构造函数,因此必须在此处初始化
。这意味着typeApplication
是一个类,而不是一个接口。接口没有构造函数,因此它们的语法不包括构造函数调用(括号):class a:CharSequence{…}
。但是
Application
是一个类,所以可以调用构造函数(如果有多个构造函数,可以调用任何构造函数),或者“在这里初始化它”。
问题内容: 表示变量只能在构造函数中分配一次。 表示它是一个类实例。 我不明白为什么禁止这样做。这些关键字在哪里互相干扰? 问题答案: 每次创建该类的实例时,都会调用一个构造函数。因此,上述代码意味着x的值将在每次创建实例时重新初始化。但是由于变量被声明为final(和static),因此您只能这样做 但是,如果删除静态,则可以执行以下操作: 或这个:
问题内容: Python中是否有诸如静态构造函数之类的东西? 如何在Python中实现静态构造函数? 这是我的代码…当我这样调用App时不会触发。该不是静态构造函数或静态初始化。 我必须这样称呼它,它每次都会实例化App类: 这是我的课: 每次调用的问题是重新创建了App对象。我的“真实” App类很长。 问题答案: 提示:任何引用都将需要实例化该类。您可以这样做: 但是,来吧,这似乎有很多不足。
问题内容: 因此,问题或多或少是我写的。我知道可能还不清楚,所以我举一个例子。 我有Tree类,其中有Node类,并且Tree的空构造函数被编写为: Eclipse给我一个错误:空构造函数中的“ new RBTree()”没有“由于某些中间构造函数调用而导致RBTree类型的封闭实例不可用”。但是,如果将RBNode更改为静态类,则没有问题。 那么,为什么在类为静态的时候它可以工作。 顺便说一句,
问题内容: import React, { Component } from ‘react’; 通常我看到的是,如果他使用es6类,人们会在构造函数中执行this.state。如果不是,他可能会使用getinitialstatestate函数放置状态。但是上面的代码(是的,这是一个有效的代码),两者都没有使用。我有2个问题,这里的状态是什么?那是局部变量吗?如果是,为什么没有?prevState来
问题内容: 我有2节课: Class A: Class B: I create a Main class which just creates new A: The output I get is: 如您所见,A的构造函数在其静态初始值设定项之前被调用。 我了解它与我创建的循环依赖关系有关,但我印象中静态初始化程序应始终在构造函数之前运行。 发生这种情况的原因是什么(技术上在Java实现中)? 是
我正在使用Kotlin开发应用程序。在我的应用程序中包含带有的,因此我实现了这两个tabs.when我移动到另一个活动并编译到制表符查看活动,应用程序获得fsource停止,显示在错误下方。 java.lang.RuntimeException:无法启动活动ComponentInfo{com.crypto.wallet/com.crypto.wallet.activities.MainActivi