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

KotlinKotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )

构造函数 ---- 1 . 构造函数个数 : Kotlin 类定义时需要指定主构造函数 , 还可以指定 0 ~ 多个次构造函数 ; 2 ....主构造函数声明属性 ---- 在类声明属性可以在类中使用 var / val 属性名称 : 属性类型 声明属性 , 也可以在主构造函数声明属性 ; ① 正常构造函数 : 构造函数是普通构造函数...name : String = name var age : Int = age } ② 主构造函数声明属性 : 在主构造函数 , 可以直接声明类属性 , 下面的代码 与 上面的代码是等价...主构造函数参数 和 成员变量访问方式 ---- 1 . 主构造函数参数访问性 : 可以在 类属性字段初始化赋值 和 init 初始化代码块 访问主构造函数参数变量值 ; 2 ....创建实例对象 : Kotlin 没有 new 关键字 , 使用 类名 ( 构造函数参数列表 ) 方式 , 创建类对象实例 ; 2 .

3.1K10

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

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

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

Kotlin构造函数与实例化

本文向大家介绍了Kotlin 构造函数声明与调用。 本文选自《揭秘Kotlin编程原理》一书 1 Kotlin构造函数 Kotlin作为面向对象编程语言,也支持为类型声明构造函数。...不过Kotlin声明构造函数方式相比Java有所变化,下面这个示例演示了在Kotlin声明构造函数方式。...3 二级构造函数 上一节演示了Kotlin构造函数声明方式,直接在类名后面声明即可。既然有“主”,就有“次”。在Kotlin,所谓“次”构造函数,有一个专门称谓,叫作“二级构造函数”。...只能说Kotlin设计人员可能很喜欢C++那种继承机制。先看看C++构造函数继承语法。...6 构造函数访问权限与缺省 前面详细分析了Kotlin构造函数和二级构造函数声明与代理语法,其中主构造函数属于Kotlin中极具创新一个语法特性,直接声明在类头部分。

2.3K20

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

构造函数 在 JavaScript ,用 new 关键字来调用函数,称为构造函数构造函数首字母一般大写(规范)。...并且该对象继承函数原型; 属性和方法被加入到this引用对象; 隐式返回this对象(如果没有显性返回其他对象) 简单说 用new调用构造函数,最大特点为,this对象指向构造函数生成对象...(ES6 class 与构造函数关 系,通过class定义类 和通过构造函数定义类 二者本质相同。并且在js执行时,会将第一种转会为第二种执行。...所以 ES6 class写法实质就是构造函数) 4、内部用this 来构造属性和方法 5、构造函数执行流程 A、立刻在堆内存创建一个新对象 B、将新建对象设置为函数this C、...逐个执行函数代码 D、将新建对象作为返回值 6、构造函数返回值默认是this 也有其他情况 。

3.4K10

Kotlin函数

这里等待后面具体来看什么时候非内联 在 Kotlin ,我们可以只使用一个正常、非限定 return 来退出一个命名或匿名函数。...表达式,但退出包含它函数)称为非局部返回。...如果一个函数只有一个表达式,则可以直接写"=" fun double(x:Int):Int=x*2 局部函数 Kotlin 支持局部函数,即一个函数在另一个函数内部。...这意味着 lambda 表达式 return 将从包含它函数返回,而匿名函数 return 将从匿名函数自身返回。...可以实现dsl风格代码全靠它 Kotlin 提供了使用指定 接收者对象 调用函数字面值功能。 可以调用该接收者对象上方法而无需任何额外限定符,可以任意调用接受者方法和属性。

2.3K40

java构造方法私有

参考链接: Java私有构造函数和Singleton类 1. 类封装性不光体现在对属性封装上,实际上方法也是可以被封装,当然在方法封装也包含了对构造方法封装。   ...,私有化,这时候此构造方法只能在本类可见!   ...因为此类Singleton构造方法被私有化了,只能在本类Singleton可见,不能再外部直接实例化!   既然再外部不可用,那么我们就在内部使用!   ...     Singleton1 singleton1 = new Singleton1();     private Singleton1(){     //将构造方法进行了封装,私有化,这时候此构造方法只能在本类可见...所谓单态就是在入口处(构造方法)限制了对象实例化操作。   总结:单态设计模式核心就是将类构造方法私有化,之后在类内部产生实例化对象,并可通过该类静态方法返回实例化对象引用。

1.1K30

浅谈Kotlin函数

本文简单谈下Kotlin函数,包括表达式函数体,命名参数,默认参数,顶层函数,扩展函数,局部函数,Lambda表达式,成员引用,with/apply函数等。...1.表达式函数体 通过下面这个简单例子看下函数声明相关概念,函数声明关键字是fun,嗯,比JSfunction还简单。 Kotlin参数类型是放在变量:后面,函数返回类型也是。...4.顶层函数 不同于Java函数只能定义在每个类里面,Kotlin采用了JavaScript 做法,可以在文件任意位置处定义函数,这种函数称为顶层函数。...5.扩展函数 扩展函数是类一个成员函数,不过定义在类外面 扩展函数不能访问私有的或者受保护成员 扩展函数也是编译成静态函数 所以可以在Java库基础上通过扩展函数进行封装,假装好像都是在调用Kotlin...,在Java可以抽取出独立函数,但这样有时候对整体结构并不太好,Kotlin提供了局部函数来解决这个问题。

2.5K20

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内联函数

Kotlin内联函数还是挺好玩 为什么需要内联函数? lambda 表达式会被正常地编译成匿名类。这表示每调用一次 lambda表达式,一个额外类就会被创建。...内联函数使用 inline 修饰符标记,内联函数在 被使用时候编译器并不会生成函数调用代码,而是使用函数实现真实代码替换每一次函数调用 内联函数如何运作?...当一个函数被声明为 inline 时,它函数体是内联一一换句话说,函数体会被直接替换到函数被调用地方,而不是被正常调用。...Int、Long、Double都继承自Number,但是,如果我们在调用上面的函数时,传入了Array,这样是会报错!!...因为 kotlin在调用函数时要求参数类名必须完全一致!! 对于上面的函数,如果我们想既可以接收 Array, 也可以接收Array, 那么就可以定义一个具体化类型参数内联函数.

1.5K20

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

禁止类继承 / 方法重写 ---- final 修饰类 : 如果类被 final 关键字修饰 , 那么该类无法被 open 关键字修饰 , 也就无法被继承 ; final 修饰方法 : 如果类函数被...子类有主构造函数 : 父类必须在主构造函数初始化 , 子类 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.构造方法也是可以进行重载。  ...;     }     //有参数构造方法     public Student(String name,int age) {         System.out.println("全参构造方法执行啦

4.4K60

KotlinKotlin 与 Java 互操作 ① ( 变量可空性 | Kotlin 类型映射 | Kotlin 访问私有属性 | Java 调用 Kotlin 函数 )

和 @Nullable 注解 二、Kotlin Java 类型映射 三、Kotlin 访问 Java 私有属性 四、Java 调用 Kotlin 函数 1、函数调用 2、分析 Kotlin 代码生成字节码数据...函数调用 Java 函数Kotlin 调用上述类两个函数 , 是不会报错 ; 但是 , 如果调用 空值 成员 , 则直接报 空指针异常 ; 代码示例 : fun main() {...: 在 Kotlin 代码 , 可以通过 实例对象.属性名 访问 Java 类 private 私有属性 ; 读取私有属性 : 使用 var name = javaMethod.name 读取...私有属性 , 调用是 JavaMethod#getName 函数 ; 修改私有属性 : 使用 javaMethod.name = "Jerry" 修改 私有属性 , 调用是 JavaMethod#...函数 ---- 1、函数调用 在 Java 调用 Kotlin 脚本函数 , 可以直接使用 " Kotlin 文件名 + Kt # 函数名 " 进行调用 , 定义在 Kotlin 文件函数相当于

1.5K20

【学习笔记】SWIFT构造函数

【学习笔记】SWIFT构造函数 2017-05-05 by Liuqingwen | Tags: Swift | Hits ?...二、语言 SWIFT 构造函数基本要点 SWIFT 构造函数用于结构体、枚举和类:struct, enum, class ,作为实例初始化,它基本语法是 init 函数: class MyClass...,仅此一个,注意:这个构造函数还是个可失败构造函数,学过 Java 朋友都知道,构造函数可以抛出异常,在 Swift 可以直接让实例化失败返回 nil ,那就是: Failable Initializer...Override 和 Required 关键字 SWIFT 构造函数在子类同样定义的话,必须需要 override 关键字: class ParentClass { init() {...override 关键字,但是所有用 required 构造函数在子类必须全部继承。

1.2K20

Kotlin尾递归函数

Kotlin尾递归函数理解 kotlin,如果某个函数末尾又调用了函数自身,这种就称为尾递归函数。 尾递归函数需要在 fun 前面添加 tailrec。...尾递归函数会使用循环方式替代递归,从而避免栈溢出。 尾递归不能在异常处理try、 catch 、 finally 块中使用 。...findFixPoint(x: Double = 1.0): Double = if (x == Math.cos(x)) x else findFixPoint(Math.cos(x)) 再例如: 计算阶乘函数...//定义计算阶乘函数 fun fact (n : Int) : Int{ if (n == 1) { return l } else { return n * fact(n - 1) } } 上面函数将调用自身作为其执行体最后一行代码...此时,上面函数可改为如下形式 //使用尾递归函数语法 tailrec fun factRec(n: Int, total : Int= 1): Int = if (n == 1) total else

77310
领券