当前位置: 首页 > 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()
http://www.xdnf.cn/news/588745.html

相关文章:

  • 【机器学习】集成学习算法及实现过程
  • Ubuntu20.04的安装(VMware)
  • 详解受约束的强化学习(四、数学符号说明)
  • PL/Python数据库: PostgreSQL Python扩展
  • Argo CD 详解:从 GitOps 到持续交付的完整实践
  • 关于数据仓库、数据湖、数据平台、数据中台和湖仓一体的概念和区别
  • 相机标定与图像处理涉及的核心坐标系
  • 2. PyQGIS Windows下开发环境搭建
  • Java——集合类
  • 【Android】屏幕适配小合集
  • 基于python,html,echart,php,mysql,在线实时监控入侵检测系统
  • 六一儿童节礼物清单|雷克赛恩 CyberPro1 打造亲子光影盛宴
  • OptiStruct结构分析与工程应用:结构激励
  • 线程安全问题
  • 100个Linux运维知识
  • Cursor远程连接+工具使用
  • VSCode查询
  • 人工智能如何改变医疗健康行业?
  • 门店自检数字化解决方案:智能任务派发+AI复核实践
  • Strace:深入系统调用的强大调试工具
  • 手机打电话时由对方DTMF响应切换多级IVR语音菜单(完结)
  • PyTorch中diag_embed和transpose函数使用详解
  • 小白的进阶之路系列之三----人工智能从初步到精通pytorch计算机视觉详解上
  • vue2使用pdfmake
  • Qt无边框界面添加鼠标事件
  • 吃透 Golang 基础:数据结构之切片
  • 实现了TCP的单向通信
  • 【数据库】-2 mysql基础语句(上)
  • 旋转编码器计次 红外对射传感器计次小实验及其相关库函数详解 (江协科技)
  • 第四章:YOLOv11 实战应用与开发指南