小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
欢迎关注公众号【空名先生】获取更多资源和交流!
👉前提
当前环境
2021年10月8日最新下载2020.3.1 Patch 2 版本
👉实践过程
😜类和对象
类的创建也是使用【class】关键字
class Entity {
var name: String? = null
var urlJUEJIIN: String? = null
var urlCSDN: String? = null
var urlList: List<String>? = null
}
初始化的时候不用new关键字
var tempEntity = Entity() //等同于java的Entity tempEntiy=new Entity();
tempEntity.name="这是我的名字" //使用里面的属性也是点出来
在Java中构造函数可以有多个,都是类名即可。在Kotlin中有一些不同
- 有主构造函数和次构造函数区分
- 主次构造函数建议单独存在,因为要想同时存在需要特殊处理
- 有个初始化函数,只要创建该类,初始化函数里面的内容必执行
构造函数的访问权限怎么修饰?
次要构造函数直接在前面写,主要构造函数在函数前类名后写
class Entity {
init {
Log.e("TAG,", "类的初始化函数,关键字是init-系统内置的 ")
}
var name: String? = null
var urlJUEJIIN: String? = null
var urlCSDN: String? = null
var urlList: List<String>? = null
constructor() {
}
private constructor(name: String) {
}
//不同参数的次要构造函数
constructor(name: String, age: Int) {
Log.e("TAG,", "执行了构造器$name===$age")
}
}
//这是两个类 在两个文件里 别搞混了
//这个是主构造函数,直接在类名后面用关键字constructor
class Person private constructor(name: String, age: String) {
init {
}
//特殊处理:如果主要构造和次要构造同时存在的话--必须包含主要构造的参数内容
constructor(name: String, age: String, height: Int) : this(name, age) {
}
}
//2021-10-14 14:52:59.468 10639-10639/cn.appstudy E/TAG,: 类的初始化函数,关键字是init-系统内置的 //2021-10-14 14:52:59.468 10639-10639/cn.appstudy E/TAG,: 执行了构造器测试===20
那么如果类继承又会怎么样呢?
如果父类有构造函数,则子类也必须有至少一个,如果不足编辑器则会提示警告
使用父类的方法也是使用【super】关键字,并且父类需要【open】关键字
open class Entity {
init {
Log.e("TAG,", "类的初始化函数,关键字是init-系统内置的 ")
}
constructor() {
}
constructor(name: String) {
}
//不同参数的次要构造函数
constructor(name: String, age: Int) {
Log.e("TAG,", "执行了父类构造器$name===$age")
}
}
class EntityTwo : Entity {
constructor() {
}
constructor(name: String) : this(name, 0) {
}
//不同参数的次要构造函数
constructor(name: String, age: Int) : super(name, age) {
Log.e("TAG,", "执行了子类构造器$name===$age")
}
}
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)
📢欢迎点赞👍收藏🌟留言📝