首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin】类初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin , 可以在 类声明 时 在 类名后...定义 " 主构造函数 " ; 在 主构造函数 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ; 在 主构造函数 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 名称...---- Kotlin 类只允许 在定义类时 定义 一个主构造函数 , 在其中可以定义 临时变量 , 也可以定义 属性变量 ; 次构造函数 定义在 Kotlin 内部 , 可以定义 多个 次构造函数..., 每个次构造函数都可以有不同参数组合 ; 定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 参数设置 参数值 ; 次构造函数可以实现代码逻辑 , 作为主构造函数补充 ; 代码示例...---- 在定义 构造函数 时 , 可以为 构造函数 参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入值 , 如果用户没有传入值 则 使用该 默认值 ; 如果 构造函数 参数有 指定默认值

4.7K20

js 构造函数构造函数作用,构造函数和普通函数区别

构造函数 在 JavaScript ,用 new 关键字来调用函数,称为构造函数构造函数首字母一般大写(规范)。...之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数主要 功能为 初始化对象,特点和new 一起使用。new就是在创建对象,从无到有,构造函数就是在为初始化对象添加属性和方法。...4、构造函数返回值 构造函数执行过程最后一步默认返回 this 。言外之意,构造函数返回值还有其它情况。 没有手动添加返回值,默认返回 this。...所以 ES6 class写法实质就是构造函数) 4、内部用this 来构造属性和方法 5、构造函数执行流程 A、立刻在堆内存创建一个新对象 B、将新建对象设置为函数this C、...逐个执行函数代码 D、将新建对象作为返回值 6、构造函数返回值默认this 也有其他情况 。

3.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin函数

/* 在函数内部,类型 T vararg 参数可见方式作为 T 数组,即上例 ts 变量具有类型 Array 。...例子如下: 在Android开发,打印信息 //通过关键字inline来定义内联函数。 //泛型 reified关键字告诉编译器,这个泛型可以具体拿到值泛型。...这里等待后面具体来看什么时候非内联 在 Kotlin ,我们可以只使用一个正常、非限定 return 来退出一个命名或匿名函数。...在 Kotlin 中有一个约定,如果函数最后一个参数一个函数,并且你传递一个 lambda 表达式作为相应参数,你可以在圆括号之外指定它: lock (lock) { sharedResource.operation...在上面第 4 行代码,less 作为一个函数使用:通过传入两个 T 类型参数来调用。 如上所写函数类型,或者可以有命名参数,如果你想文档化每个参数含义的话。

2.3K40

JAVA private私有 默认构造函数 生成过程

如果一个类没有定义任何构造函数,则编译器将生成一个缺省构造函数,该构造函数访问修改符和类访问修改符相同,例如: class test将生成test()构造函数 public class test将生成...public test()构造函数。...如果读者仔细思考一下创建一个新类实例过程,大概已经明白了产生上述现象原因: 当程序试图创建一个Wrapper$InnerClass类实例时,却不能使用其缺省构造函数,因为Wrapper$InnerClass...因此编译器不得不再生成一个可访问构造函数,由于这里只有Wrapper类private void testInnerClass()方法使用了new InnerClass(),所以编译器只(需)为这个新构造函数生成了...同时,为了和已有的缺省构造函数有所区别,就加入了一个Wrapper$1类型参数,为此,编译器还要生成一个Wrapper$1类。

1.9K30

浅谈Kotlin函数

1.表达式函数体 通过下面这个简单例子看下函数声明相关概念,函数声明关键字fun,嗯,比JSfunction还简单。 Kotlin参数类型放在变量:后面,函数返回类型也是。...5.扩展函数 扩展函数一个成员函数,不过定义在类外面 扩展函数不能访问私有的或者受保护成员 扩展函数也是编译成静态函数 所以可以在Java库基础上通过扩展函数进行封装,假装好像都是在调用Kotlin...如果不支持Lambda都不好意思称自己一门现代语言,来看看Kotlin表演。...从编译器角度看,Lambda一个代码块不是一个对象,不能把它当成对象引用。Lambdathis引用指向包围它类。 如果在Lambda要用到常规意义上this呢?这个就需要带接收者函数。...toString() } with返回执行Lambda代码结果,该结果Lambda最后一个表达式值。如果想返回接收者对象,而不是执行Lambda结果,需要用apply函数

2.5K20

Kotlin内联函数

Kotlin内联函数还是挺好玩 为什么需要内联函数? lambda 表达式会被正常地编译成匿名类。这表示每调用一次 lambda表达式,一个额外类就会被创建。...当一个函数被声明为 inline 时,它函数内联一一换句话说,函数体会被直接替换到函数被调用地方,而不是被正常调用。...synchronized(lock) { println("do cus action--inline") } p rintln("执行 synchronized 之后") } 因为 synchronized 函数内联...Int、Long、Double都继承自Number,但是,如果我们在调用上面的函数时,传入了Array,这样会报错!!...因为 kotlin在调用函数时要求参数类名必须完全一致!! 对于上面的函数,如果我们想既可以接收 Array, 也可以接收Array, 那么就可以定义一个具体化类型参数内联函数.

1.5K20

C++构造函数作用_c++什么构造函数

,再比如说预先一些计算,比如加减乘除之类,所以没有参数构造函数就不对成员变量进行赋值,他还可以在函数体内执行分配内存或者打开文件操作还可以提前一些计算,所以无参构造函数没有参数也无所谓它可以进行别的操作啊...未初始化局部变量 对于局部变量,如果不进行初始化,那么它初始值随机。局部变量定义在函数内部,其存储空间动态分配在栈。...因为一个函数局部变量在内存地址,在每次函数被调用时都可能不同,因此自动初始化工作就不是一次性,而是每次函数被调用时都耍,这会带来无谓时间开销。...即不能在外部直接对他们赋值修改 private: //私有的 char *m_name; int m_age; float m_score; public: //共有的...实际上编译器只有在必要时候才会生成默认构造函数,而且它函数体一般不为空。默认构造函数目的帮助编译器初始化工作,而不是帮助程序员。

1.3K20

KotlinKotlin继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

禁止类继承 / 方法重写 ---- final 修饰类 : 如果类被 final 关键字修饰 , 那么该类无法被 open 关键字修饰 , 也就无法被继承 ; final 修饰方法 : 如果类函数被...省略 constructor 和 () 代码示例 : 下面的两个类等价 , 只是第一个类定义标准形式 , 第二个省略了 constructor 关键字和空括号 ; open class Father...子类有主构造函数 : 父类必须在主构造函数初始化 , 子类 constructor() 可以省略 ; " : " 后 Father() 相当于调用了父类构造函数 , 将子类构造函数委托给父类构造函数执行...子类有主构造函数 : 子类需要在主构造函数定义需要变量 , 其中参数 , 可以直接传递给后面委托调用构造函数 ; class Son constructor (name : String, age...子类没有主构造函数 : 如果没有主构造函数 , 那么子类必须有次构造函数 , 子类需要在次构造函数定义需要变量 , 其中参数 , 可以直接传递给后面 super ( ) 委托调用构造函数 ;

1.1K10

java构造函数调用另一个构造函数_java构造函数

参考链接: Java程序从另一个调用一个构造函数 package demo03; /*  * 构造方法专门用来创建对象方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法  * 格式:... * public 类名称(参数类型 参数名称){  *         方法体  *   * }  * 注意事项:  * 1.构造方法名称必须和所在类名称完全一样,就连大小写也要一样  * 2.构造方法不要写返回值类型...,连void都不写  * 3.构造方法不能return一个具体返回值  * 4.如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体什么都不做  * 5.一旦编写了至少一个构造方法...,那么编译器将不再赠送  * 6.构造方法也是可以进行重载。  ....setAge(45);         System.out.println("我姓名:"+stu2.getName()+"年龄:"+stu2.getAge());     } }

4.4K60

【学习笔记】SWIFT构造函数

二、语言 SWIFT 构造函数基本要点 SWIFT 构造函数用于结构体、枚举和类:struct, enum, class ,作为实例初始化,它基本语法 init 函数: class MyClass...//no init() needed here...... } let instance = MyClass() 比较特别的默认构造函数对于结构体来说,它有两个默认构造函数,很人性化: struct...,仅此一个,注意:这个构造函数还是个可失败构造函数,学过 Java 朋友都知道,构造函数可以抛出异常,在 Swift 可以直接让实例化失败返回 nil ,那就是: Failable Initializer...不管便利构造通过直接访问指定构造器还是通过访问其他便利构造器达到访问指定构造目的。...另外要指出,可以直接定义便利构造器,你只需要访问默认指定构造器就可以了,注意注释部分重复定义错误提示哦: ?

1.2K20

Kotlin高阶函数深入讲解

前言 在Kotlin,高阶函数指将一个函数作为另一个函数参数或者返回值。如果用f(x)、g(x)用来表示两个函数,那么高阶函数可以表示为f(g(x))。...Kotlin为开发者提供了丰富高阶函数,比如Standard.ktlet、with、apply等,_Collectioins.ktforEach等。...区别是T.run()作为泛型T一个扩展函数,所以在传入lambda表达式可以使用this关键字来访问这个泛型T成员变量和成员方法。...let应用最多场景用来判空,如果上面示例EditText自定义可空View,那么使用let就非常方便: var email: EditText?...总结 最后对这些高阶函数一下总结,TODO对比JavaTODO,需要实现业务逻辑,不能放任不理,否则会出现异常,导致崩溃。

1.1K20

java 构造函数如何执行「建议收藏」

大家好,又见面了,我你们朋友全栈君。 1.构造函数不是方法!!...原因1:方法的话,会直接执行方法体内代码,但是构造函数首先执行不是{}里代码块,而是给对象成员初始化; 2.方法可以被调用其他方法调用,但是构造函数不能被方法或变量调用。...从上面测试得出结论: 构造函数初始化对象时,执行顺序 0.方法优先存在于任何变量或者对象,存在于类,而不是对象。即构造对象前,方法就存在。 第一步....静态变量赋值 第二步.代码块或者全局变量,(执行顺序由代码位置决定,如果代码块在前,优先执行代码块;如果变量在前,优先变量赋值) 第三步.执行构造函数内部代码 3.继承构造函数执行顺序:...因为父类num private不能继承,但是子类num还没有被赋值(要等到父类构造完成,才能构造子类),所以默认0 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

76630
领券