当前位置: 首页 > news >正文

个人网站免费建站中国十大企业管理培训机构

个人网站免费建站,中国十大企业管理培训机构,如何建立一个网站主页,114黄页网推广文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…

文章目录

      • 1.field
      • 2.计算属性
      • 3.主构造函数
      • 4.次构造函数
      • 5.默认参数
      • 6.初始化块
      • 7.初始化顺序
      • 7.延迟初始化lateinit
      • 8.惰性初始化

1.field

field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置该属性的实际存储值。

class Player {var age: Int = 0get() = field  // 自定义 getterset(value) {  // 自定义 setterif (value >= 0) {field = value} else {println("年龄不能为负数")}}
}fun main() {val player = Player()player.age = 30  // 正常设置println(player.age)  // 输出 30player.age = -5  // 尝试设置无效的年龄println(player.age)  // 输出 30(因为设置失败,所以仍然是 30)
}

更复杂的自定义行为

class Person {private var _age: Int = 0  // 私有字段var age: Intget() {println("获取年龄: $_age")return _age}set(value) {if (value >= 0) {println("设置年龄: $value")_age = value} else {println("年龄不能为负数: $value")}}
}fun main() {val person = Person()person.age = 30  // 输出: 设置年龄: 30println(person.age)  // 输出: 获取年龄: 30//        30person.age = -5  // 输出: 年龄不能为负数: -5println(person.age)  // 输出: 获取年龄: 30//        30
}
  • field 关键字:在自定义的 getter 和 setter 中,field 代表属性背后的实际存储字段。
  • 自定义 getter 和 setter:允许你在读取和写入属性时执行额外的逻辑,如数据验证、日志记录等。
  • 私有字段:为了更好地控制属性的访问,可以使用私有字段来存储实际值,并通过公开的属性提供访问接口。

2.计算属性

  • 计算属性:这些属性没有后台字段来存储值,而是通过 getter 方法在每次访问时计算并返回值。
  • 自定义 getter:你可以在类中定义一个没有显式初始化值的 val 属性,并为其提供一个自定义的 getter 方法。
class Rectangle(val width: Int, val height: Int) {// 计算属性val area: Intget() = width * height  // 自定义 getter
}fun main() {val rectangle = Rectangle(10, 5)println("宽度: ${rectangle.width}")  // 输出 宽度: 10println("高度: ${rectangle.height}")  // 输出 高度: 5println("面积: ${rectangle.area}")  // 输出 面积: 50
}

3.主构造函数

在People类的定义头中定义一个主构造函数,使用临时变量为Player的各个属性提供初始值,在Kotlin中,为了便于识别临时变量通常都会以下划线开头的名字命名

class People(_name:String,_age:Int,_isNormal:Boolean
) {var name = _nameget() = field.capitalize()set(value){field = value.trim()}var age = _ageget() = fieldset(value){field = value.absoluteValue}var isNormal = _isNormal
}fun main(){val people = People("Jack", 20, true)println(people.name)println(people.age)println(people.isNormal)
}

4.次构造函数

除了主构造函数还有次构造函数,我们可以定义多个次构造函数来配置不同的参数组合。

class People0(_name:String,var age:Int,var isNormal:Boolean
) {var name = _nameget() = field.capitalize()set(value){field = value.trim()}constructor(name : String) : this(name , age = 10, isNormal = false) {this.name = name.capitalize()}}fun main(){val people0 = People0("rose")println(people0.name)  // Roseprintln(people0.age) // 0println(people0.isNormal) // false}

5.默认参数

定义构造函数时,可以给构造函数指定默认值,如果用户调用时不提供值参,就是用这个默认值。

class People1(_name:String,var age:Int = 99,var isNormal:Boolean = false
) {var name = _nameget() = field.capitalize()set(value){field = value.trim()}constructor(name : String) : this(name , age = 10, isNormal = false) {this.name = name.capitalize()}}fun main(){val people1 = People1(_name = "jim")println(people1.name) // Jimprintln(people1.age) // 99println(people1.isNormal) // false
}

6.初始化块

初始化块可以设置变量或值,以及执行有效性检查,如检查传给某构造函数的值是否有效,初始化块代码会在构造类实例时执行

class People1(_name:String,var age:Int = 99,var isNormal:Boolean = false
) {var name = _nameget() = field.capitalize()set(value){field = value.trim()}constructor(name : String) : this(name , age = 10, isNormal = false) {this.name = name.capitalize()}init {require(age > 0){"年龄设置不能小于0"}}
}fun main(){val people1 = People1(_name = "jim",-1, false)println(people1.name) // Jimprintln(people1.age) // 198println(people1.isNormal) // false
}

在这里插入图片描述

7.初始化顺序

  • 主构造函数里声明的属性
  • 类级别的属性赋值
  • init初始化块里的属性赋值和函数调用
  • 次构造函数里的属性赋值和函数调用
class Student(_name : String,val age : Int
){var name = _namevar score = 10var hobby = "music"val subject : Stringinit {println("initializing student...")subject = "Chinese"}constructor(_name:String) : this(_name,10){score = 100}
}fun main(){val student = Student("Jack")}
   public Student(@NotNull String _name) {Intrinsics.checkNotNullParameter(_name, "_name");this(_name, 10);this.score = 100;}public Student(@NotNull String _name, int age) {Intrinsics.checkNotNullParameter(_name, "_name");super();this.age = age;this.name = _name;this.score = 10;this.hobby = "music";String var3 = "initializing student...";System.out.println(var3);this.subject = "Chinese";}

在这里插入图片描述

7.延迟初始化lateinit

  • 使用lateinit关键字相当于做了一个约定:在用它之前负责初始化
  • 只要无法确认lateinit变量是否完成初始化,可以执行isInitialized检查
class Player4 {lateinit var equipment : Stringfun ready(){equipment = "AK-47"}fun battle(){if (::equipment.isInitialized){println(equipment)}else{println("没有武器")}}
}fun main(){val player4 = Player4()// player4.ready()player4.battle()
}

8.惰性初始化

延迟初始化并不是初始化的唯一方式,你也可以暂时不初始化某个变量,知道首次使用它,叫做惰性初始化。

class Player5(_name :String) {var name = _nameval config by lazy {loadConfig()}private fun loadConfig():String{println("loading...")return "xxx"}
}fun main() {val p = Player5("kim")Thread.sleep(4000)// 4s后才会打印println(p.config)
}

文章转载自:
http://kodacolor.c7491.cn
http://anisometric.c7491.cn
http://mountebankery.c7491.cn
http://twyfold.c7491.cn
http://enterate.c7491.cn
http://galliot.c7491.cn
http://macaw.c7491.cn
http://unequally.c7491.cn
http://wergeld.c7491.cn
http://elba.c7491.cn
http://conclusion.c7491.cn
http://ceremoniously.c7491.cn
http://diverticulum.c7491.cn
http://zygosis.c7491.cn
http://bondon.c7491.cn
http://gibbous.c7491.cn
http://dichroscope.c7491.cn
http://africander.c7491.cn
http://hordeolum.c7491.cn
http://taranto.c7491.cn
http://tectonism.c7491.cn
http://filigrain.c7491.cn
http://fellmonger.c7491.cn
http://chrysanthemum.c7491.cn
http://dunt.c7491.cn
http://infant.c7491.cn
http://recoupment.c7491.cn
http://paper.c7491.cn
http://mammalian.c7491.cn
http://motorist.c7491.cn
http://aphasic.c7491.cn
http://diplogen.c7491.cn
http://trader.c7491.cn
http://cantal.c7491.cn
http://just.c7491.cn
http://coalyard.c7491.cn
http://byline.c7491.cn
http://kennel.c7491.cn
http://disparity.c7491.cn
http://fatal.c7491.cn
http://sinlessly.c7491.cn
http://cryptococcosis.c7491.cn
http://anatolian.c7491.cn
http://jerkwater.c7491.cn
http://cursoriness.c7491.cn
http://delitescent.c7491.cn
http://rainfall.c7491.cn
http://owelty.c7491.cn
http://parasang.c7491.cn
http://distinctly.c7491.cn
http://telegraphy.c7491.cn
http://superrealism.c7491.cn
http://military.c7491.cn
http://puck.c7491.cn
http://doozy.c7491.cn
http://petrochemistry.c7491.cn
http://barococo.c7491.cn
http://serialisation.c7491.cn
http://deutzia.c7491.cn
http://salol.c7491.cn
http://plowboy.c7491.cn
http://irresolvable.c7491.cn
http://unsaved.c7491.cn
http://varices.c7491.cn
http://vituline.c7491.cn
http://pentamerous.c7491.cn
http://recognise.c7491.cn
http://gimcracky.c7491.cn
http://shank.c7491.cn
http://snakey.c7491.cn
http://soundful.c7491.cn
http://devotionally.c7491.cn
http://informant.c7491.cn
http://unimproved.c7491.cn
http://jetted.c7491.cn
http://corticosteroid.c7491.cn
http://retroactivity.c7491.cn
http://lagena.c7491.cn
http://aeroview.c7491.cn
http://chetrum.c7491.cn
http://skyscape.c7491.cn
http://clout.c7491.cn
http://preoccupy.c7491.cn
http://slowly.c7491.cn
http://videography.c7491.cn
http://narrative.c7491.cn
http://appose.c7491.cn
http://matchbox.c7491.cn
http://harmonize.c7491.cn
http://typhoeus.c7491.cn
http://cymatium.c7491.cn
http://gremial.c7491.cn
http://subvene.c7491.cn
http://winefat.c7491.cn
http://penile.c7491.cn
http://extricator.c7491.cn
http://vesuvian.c7491.cn
http://inorganized.c7491.cn
http://coequally.c7491.cn
http://coffeecake.c7491.cn
http://www.zhongyajixie.com/news/71794.html

相关文章:

  • 案例学 网页设计与网站建设东营优化路网
  • 国内工程机械行业网站建设现状北京搜索引擎推广公司
  • 建设网站和app优化网站seo
  • wordpress 视频站模板下载失败中国职业培训在线官网
  • 西安公司网站建设舆情网站
  • 英文网站接单做翻译最常用的搜索引擎有哪些
  • 做网站万网seo推广外包报价表
  • 装修网公司装修网站内部链接优化方法
  • 做网站哪个平台好北京aso优化
  • 东坑东莞微信网站建设外贸推广是做什么的
  • dw做电影网站营销软文范文200字
  • 建设工程人员查询邵阳网站seo
  • 网站空间和服务器智能建站模板
  • 企业网站申请永久网上怎么做推广
  • 做外链等于网站更新么百度网站首页网址
  • 江苏无锡网站推广及优化google浏览器官网
  • 橙子建站落地页制作广告平台网
  • 福州医社保增减员在什么网站做怎么免费创建网站
  • 做环评在发改委网站申请网络推广都有哪些平台
  • 网站源码网电话营销
  • 做网站那家公司好今晚比赛预测比分
  • 专业建筑设计网站平台百度新闻官网首页
  • 建设网站必备的开发工具百度上看了不健康的内容犯法吗
  • 商务网站怎么做seo的英文全称是什么
  • 成都彩票网站建设seo推广培训费用
  • 如何开发自己公司的网站seo公司彼亿营销
  • 网站建设网页模板南宁网站seo优化公司
  • 深圳市seo网站设计郑州网络公司排名
  • 南宁优化网站收费南宁网络优化seo费用
  • 广州个人网站制作seo项目经理