classHello(// 主构造函数, 直接在主构造函数中定义属性varname:String,// 该值是临时变量, 为 age 属性赋值_age:Int){// 类中的属性varage=_agevartype="老鼠"vargender:String init{println("init 初始化块开始执行")gender="男"}constructor(_age:Int):this("Tom",_age){println("次构造函数开始执行...
openclassPerson7{varname:String?=nullvarid:Int=0constructor(name:String){this.name=name}constructor(id:Int){this.id=id}//构造对象的时候,init代码块只会被执行一次init{System.out.println("init---")}} 执行完 init 函数之后,再执行构造函数里面的逻辑,反编译后可以看到 init 之后才执行 name 的赋值...
*/classTest(num: Int){ ... } 1.2、构造函数中的初始化代码块 构造函数中不能出现其他的代码,只能包含初始化代码。包含在初始化代码块中。 关键字:init{...} 值得注意的是,init{...}中能使用构造函数中的参数 例: funmain(args:Array<String>){// 类的实例化,会在下面讲解到,这里只是作为例子讲解打...
classViewprivateconstructor(tt: Int) {...}//主构造函数设置为私有的,则外部不能通过主构造函数进行创建该类;通常用于单例classView @Inject constructor(tt: Int) {...}//这里增加这个Inject注解来标记一个需要注入的依赖项 2、初始化语句块 一个类里面可以有多个初始化语句块,格式是 init {...} classVi...
*/classStudentconstructor(varname:String,varage:Int){} III . init 初始化代码块 1 . init 代码块引入 :主构造函数没有函数体 , 不能执行任何代码 ; 主构造函数的初始化相关操作可以放在 init 初始化代码块中 ; 2 . init 初始化代码块 :一个类中可以定义多个 init 代码块 , 其执行顺序是按照代码顺序...
class Student constructor(num: Int) { init { println("num ==$num") } } 1. 2. 3. 4. 5. init() 是主构造方法的初始化方法(也称为初始化代码块) 也就是说主构造方法被调用后,会调用init()这个方法,初始化数据,主构造方法内的参数,init()方法可以使用。
class Dog constructor(val age: Int, val name: String){ init { println("Dog $name is $age years old.") } } 1. 2. 3. 4. 5. 6. 7. 如果构造器有注解,或者有可见度修饰符,则constructor关键字是必须的,注解和修饰符放在它之前,否则constructor可以省略不写。
调用顺序:主级函数>init>次级函数 如果类有主级函数 代码如下: // 主级函数classCustomView(context:Context,attrs:AttributeSet?):FrameLayout(context,attrs){// 次级函数constructor(context:Context):this(context,null)init{Log.d("CustomView",attrs.toString())}} ...
对于函数式编程,通常要写大量的PoJo用以在函数之间传递数据,这些对象最大的特点就是仅是数据,且不可变(Immutable),通常的实现方式就是把成员变量全用final修饰(只读read only)。在Kotlin中,可以非常方便的定义这要的类型,即data class。 data class User(val name: String, val age: Int) ...
class Test constructor(num : Int){ ... } 等价于 /* 因为是默认的可见性修饰符且不存在任何的注释符 故而主构造函数constructor关键字可以省略 */ class Test(num: Int){ ... } 1.2、构造函数中的初始化代码块 构造函数中不能出现其他的代码,只能包含初始化代码。包含在初始化代码块中。 关键字:init{...