Kotlin构造函数

目录

构造函数类型

主构造函数

成员变量设置

私有化操作

次级构造函数


构造函数类型

  • 主构造函数(主构造器)------只能有一个
  • 次构造函数(次构造器)------可以是多个

主构造函数

构造器 constructor关键字前 无注解或修饰符作用,可直接省略

复制代码
class Singleton private constructor (age:Int){}
class Singleton (age:Int){}

成员变量设置

//在构造器直接初始化(用var/val修饰变量)

复制代码
class Singleton private constructor (var age:Int = 20){

// 在构造器声明,在类内部初始化

复制代码
class Singleton private constructor (age:Int = 20){
    private val age:Int = age

//在构造器声明,在init初始化程序块 初始化

复制代码
class Singleton private constructor (age:Int = 20){
    private val age:Int 
    init {
        this.age = age
    }

私有化操作

使外部无法通过主构造创建对象

复制代码
class Singleton private constructor (var age:Int = 20){}

次级构造函数

目的:为类的构造提供多种结构,更灵活

语法规则:

  • constuctor关键字不能省略
  • 次级构造函数会直接或间接调用主构造函数
复制代码
class Singleton private constructor ( age:Int ){


    constructor(name:String,age:Int) : this(age) {
    }
    constructor(sex:Char,name: String,age: Int) : this(name,age) {
    }
  • 次构造函数调用()
复制代码
fun main(){
    val sg1:Singleton = Singleton("zhoujun",3)
    val sg2:Singleton = Singleton('m',"zhoujun",3)
}
  • 次级构造函数调用父类次级构造
复制代码
open class Person {
 constructor(name:String,age:Int){ } 
 constructor(name: String,age: Int,sex:String):this(name,age){ } 
 } 
 
 class Man: Person{
  constructor(name:String,age: Int):super(name,age){ } 
  constructor(name:String,age: Int,sex: String):super(name,age, sex){ }
 }

class BAT private constructor(){ companion object{ //单例对象创建 } }

相关推荐
好的佩奇27 分钟前
Dart 之方法、操作符与可调用对象
android·flutter·dart
恋猫de小郭43 分钟前
Flutter Impeller Vulkan 内存持续上涨,问题没想到是文字阴影
android·前端·flutter
zhanghaha13141 小时前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain1 小时前
C++转Java日记(02)
java·开发语言·c++
杜 硕1 小时前
从零开始的C++生活——第七讲——02
开发语言·c++·生活
zhanghaha13141 小时前
C# 系列教程_8 循环语句 保姆级精讲(面向新手)
开发语言·c#
麦麦麦当劳大王10 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy199010 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
只睡四小时11 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库