我们可以通过子类的构造函数来调用父类的构造函数,并传入相应的参数。有以下几种方法可以实现。 1.使用super关键字调用父类的构造方法: 在子类的构造方法中使用super关键字,后面跟上括号,传入相应的参数。super关键字表示父类的引用,可以通过它来调用父类的构造方法。 例如,有一个父类Person和一个子类Student,我们...
先是父类的init,并且init从上到下的顺序;最后才是子类:子类的init,然后才是子类的构造函数 三、主构造函数和从构造函数的关系 1、从构造函数最终一定要去调用主构造函数 openclassView(v: Int) { constructor(ctx: String):this(ctx, "attr?") {//这里继续调用下面的从构造函数println("view 3") } constr...
在 Java 的继承特性中有一个规则,子类的构造函数需要调用父类的构造函数,在 Kotlin 中我们同样需要遵循这个规则。这个()其实就是调用父类的无参构造函数。当 Student 类的主构造函数初始化时会调用 Person 类的无参数构造函数。 当然,继承一个类时也可以调用父类的有参构造函数: classStudent(name:String,age:In...
此时student类会报错,因为空括号表示调用person类的无参构造函数,但是现在person类已经没有无参构造函数了。 解决方法:必须给person类的构造函数加上name和age字段。再将这两个参数传给person类的构造函数。 注意:此时不能将name和age字段声明成val,因为在主构造函数中声明了就会自动成为该类的字段,会导致和父类中同...
每个类有个默认不带参数的主构造函数。 主构造函数的特点-> 没有函数体,直接定义在类名后。 //带参数 class Student(sno: String, grade: Int) : People() { } 1. 2. 3. 4. Java 和 Kotlin 一样,子类的构造函数必须调用父类的构造函数。
constructor(name: String, age: Int) : super(name,age){ } } Student类的后面没有显式的定义主构造函数,同时又因为定义了次构造函数,所以现在Student类是没有主构造函数的; 既然没有主构造函数,继承Person类的时候也就不需要再加上括号了; 由于没有主构造函数,次构造函数只能直接调用父类的构造函数。
Kotlin的构造函数分为主构造器(primary constructor)和次级构造器(secondary constructor)。下面我们来看看他们的写法。 一、 Primary Constructor 1. 写法一: class 类名 constructor(形参1, 形参2, 形参3){} eg: class Person constructor(username: String, age: Int){ ...
在Kotlin中类的定义方式如下 class Person {} 在Kotlin类中可以包括类名、构造函数、初始化块、属性、函数、内部类和嵌套类、伴生对象、对象表达式和对象声明 主次构造函数 构造函数在对象被实例化时调用。与Java不同的是,在Kotlin中可以有一个主构造函数,有一个或者多个次级构造函数,如下为一个主构造函数的例子,na...
函数体第一句,比较明显,获取当前线程,不分析 第二句,定义一个val常量contextInterceptor,context[ContinuationInterceptor]表示调用了context的get函数,传入的参数为ContinuationInterceptor,参照EmptyCoroutineContext的源码,这个get函数返回的是null。 val contextInterceptor = context[ContinuationInterceptor] ...
0 . 类继承格式 :使用 " : " 继承父类 ; 如果该父类有主构造函数 , 那么子类必须至少有一个主构造函数或次构造函数 , 子类的构造函数下面会根据不同情况详细解析 ; 代码语言:javascript 复制 //注意这里的父类构造函数需要实际调用class子类:父类{//子类函数体override fun被重写的父类方法名(被重写的父类...