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

Kotlin 极简小抄 P10(类与对象、主构造函数、带有默认参数值的主构造函数、次要构造函数)

Kotlin 概述

  1. Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言

  2. Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性

  3. Kotlin 是 Android 应用开发的首选语言,也可以与 Java 一样用于服务器端开发


一、类与对象

  1. 声明一个类
class Person {var name: String = ""var age: Int = 0fun introduce() {println("$name - $age")}
}
  1. 如果一个类没有类体,可以省略花括号
class Empty
  1. 创建与使用对象
val person = Person()person.introduce()person.name = "Alice"
person.age = 30person.introduce()

二、主构造函数

1、声明
  1. 完整的构造函数声明
class People constructor(name: String, age: Int) {var name: String = namevar age: Int = agefun introduce() {println("$name - $age")}
}
  1. 简化的构造函数声明
class People(name: String, age: Int) {var name: String = namevar age: Int = agefun introduce() {println("$name - $age")}
}
  1. 更加简化的构造函数声明
class People(var name: String, var age: Int) {fun introduce() {println("$name - $age")}
}
  1. 使用不可变属性
class People(val name: String, val age: Int) {fun introduce() {println("$name - $age")}
}
2、使用
  1. 使用位置参数方式创建对象(必须按声明顺序)
val people = People("Jack", 18)
  1. 使用命名参数方式创建对象(参数顺序可以调换)
val people = People(age = 18, name = "Jack")

三、带有默认参数值的主构造函数

1、声明
class Employee(var name: String = "Unknown", var age: Int = 0) {fun introduce() {println("$name - $age")}
}
2、使用
  • 调用时可以不传参数,使用默认值
val employee1 = Employee("Jack", 18)
val employee2 = Employee("Jack")
val employee3 = Employee(age = 18)
val employee4 = Employee()employee1.introduce()
employee2.introduce()
employee3.introduce()
employee4.introduce()
# 输出结果Jack - 18
Jack - 0
Unknown - 18
Unknown - 0

四、次要构造函数

1、声明
class Worker(var name: String, var age: Int) {constructor(name: String) : this(name, 0)constructor(age: Int) : this("Unknown", age)constructor() : this("Unknown", 0)fun introduce() {println("$name - $age")}
}
2、使用
  1. 使用主构造函数
val worker = Worker("Jack", 18)
  1. 使用次要构造函数(只接受 name 参数)
val worker = Worker("jack")
  1. 使用次要构造函数(只接受 age 参数)
val worker = Worker(18)
  1. 使用次要构造函数(不接受参数)
val worker = Worker()

相关文章:

  • python——多线程编程(threading)
  • python实战:如何获取word文档中指定内容并作为新文件名
  • 鸿蒙 HarmonyOS NEXT 系统 Preference 首选项使用全解析
  • 偏微分方程数值方法指南及AI推理
  • springboot3+vue3融合项目实战-大事件文章管理系统-本地存储及阿里云oss程序集成
  • Linux操作系统的优势官方开发App应用程序有哪些优缺点
  • Java进阶之新特性
  • 中科视界,赋能文化产业新世界——千眼狼高速摄像机、DIC测量系统亮相第二十一届中国(深圳)国际文博会
  • VMIC PMV-5565PIORC-21000超高速光纤反射内存硬件参考
  • Argo CD 详解:从 GitOps 到持续交付的完整实践
  • Appium+python自动化(二)- 环境搭建—下
  • 鸿蒙 Initiated Worker with invalid NODE_OPTIONS env variable
  • N-gram语言模型原理与实战教程
  • Issac Lab安装
  • java I/O
  • SQLSERVER数据库表分区学习(未在项目上使用)
  • 地信GIS专业关于学习、考研、就业方面的一些问题答疑
  • HCIP-AI培养计划,成为新时代AI解决方案架构高级工程师
  • 【Dify学习笔记】:dify通过ollama加载DeepSeek-R1-32B模型无法加载!终于解决了!!
  • DL00786-基于RTDETR的水稻病害检测含完整数据集
  • 常山网站建设/中国网站排名前100
  • 绍兴网站建设推广/搜索引擎营销的优缺点
  • 网站添加留言板功能/谷歌优化工具
  • 简单企业网站/保定网站制作
  • wordpress页面内容调用/江阴网站优化公司
  • 运营网站/广州seo黑帽培训