这篇文章主要介绍“Android Kotlin类怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android Kotlin类怎么使用”文章能帮助大家解决问题。
1. 类的声明 & 实例化
// 格式class 类名(参数名1:参数类型,参数名2:参数类型...){ // to do }// 示例class User(userName: String, age: Int){ // to do }// 实例化// Kotlin没有new关键字,所以直接创建类的实例(无参情况 & 有参):var user = User()var user = User("ABC" , 123)// 额外说明:Kotlin支持默认参数// 即在调用函数时可不指定参数,则使用默认函数class User(userName: String = "hjc", age: Int = 26){ // to do }// 在实例化类时不传入参数,userName默认 = hjc,age默认 = 26var user = User()// 在设置默认值后,若不想用默认值可在创建实例时传入参数var user = User("ABC" , 123)// 注:命名参数若一个默认参数在一个无默认值的参数前,那么该默认值只能通过使用命名参数调用该函数来使用class User(userName: String = "hjc", age: Int){ // to do }var user = User(age = 26)
对于构造函数,Kotlin中类可有一个主构造函数 & 多个次构造函数,下面将详细说明。
2. 构造函数
2.1 主构造函数
属于类头的一部分 = 跟在类名后,采用 constructor 关键字
不能包含任何的代码。初始化的代码放到以 init 关键字作为前缀的代码块中
class 类名 constructor(参数名:参数类型){init { //... }}// 示例class User constructor(userName: String) {init { //... }}// 注:若主构造函数无任何注解 / 可见性修饰符,可省略 constructor 关键字class 类名(参数名:参数类型){init { //... }}// 示例class User (userName: String) {init { //... }}
2.2 次构造函数
必须加constructor关键字
一个类中可存在多个次构造函数,传入参数不同
// 形式constructor(参数名:参数类型) :{函数体}// 示例class User(userName: String) { // 主构造函数 init { println(userName) } // 次构造函数1:可通过this调主构造函数 constructor() : this("hjc") // 次构造函数2:可通过this调主构造函数 constructor(age: Int) : this("hjc") { println(age) } // 次构造函数3:通过this调主构造函数 constructor(sex: String, age: Int) : this("hjc") { println("$sex$age") }}// 实例化类User("hjc") // 调用主构造函数User() // 调用次构造函数1User(2) // 调用次构造函数2User("male",26) // 调用次构造函数3
3. 类的属性
Kotlin的类可以拥有属性:关键字var(读写) / 关键字val(只读)
class User { var userName: String val sex: String = "男"}// 使用属性 = 名称 + 引用User().sex // 使用该属性 = Java的getter方法User().userName = "hjc" // 设置该属性 = Java的setter方法
4. 可见性修饰符
5. 继承 & 重写
类似于Java,Kotlin是单继承 = 只有一个父类
区别:Kotlin使用冒号“ : ”继承 & 默认不允许继承(若想让类可被继承,需用open关键字来标识)
// 用open关键字标识该类允许被继承open class Food // 类Fruits继承类Foodclass Fruits : Food()
对于子类重写父类的方法,在Kotlin中,方法也是默认不可重写的
若子类要重写父类中的方法,则需在父类的方法前面加open关键字,然后在子类重写的方法前加override关键字
// 父类// 在类 & 方法前都加了关键字open,为了被继承 & 方法重写open class Food { open fun banana() {}}// 子类 class Fruits : Food(){// 重写了父类的方法 override fun banana() { super.banana() }}
6. 特殊类
下面将讲解一些特殊的类:
嵌套类(内部类)
接口
数据类
枚举类
6.1 嵌套类(内部类)
class User { var age: Int = 0 inner class UserName { }}var userName: User.UserName = User().UserName()
6.2 接口
// 声明interface A{}interface B{}// 方法体// 接口中的方法可以有默认方法体,有默认方法体的方法可不重写// 区别于Java:Java不支持接口里的方法有方法体。interface UserImpl{ fun getName(): String // 无默认方法体,必须重写 fun getAge(): Int{ // 有默认方法体,可不重写 return 22 }}// 实现接口UserImpl:需重写getName() & 可不重写getAge()class User :UserImpl{ override fun getName(): String { return "hjc" }}// 实现接口:冒号:class Food : A, B {} // Kotlin是多实现class Fruits: Food,A, B {} // 继承 + 实现接口
6.3 数据类
// 使用:创建类时会自动创建以下方法:// 1. getter/setter方法;// 2. equals() / hashCode() 对;// 3. toString() :输出"类名(参数+参数值)";// 4. copy() 函数:复制一个对象&改变它的一些属性,但其余部分保持不变// 示例:// 声明1个数据类data class User(var userName: String, var age: Int)// copy函数使用var user = User("hjc",26)var user1 = user.copy(age = 30)// 输出user1.toString(),结果是:User(userName=hjc,age=30)// 特别注意// 1. 主构造方法至少要有一个参数,且参数必须标记为val或var// 2. 数据类不能用open、abstract、sealed(封闭类)、inner标识
6.4 枚举类
// 定义 enum class Color { RED, GREEN, BLUE}// 为枚举类指定值enum class Color(rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)}
关于“Android Kotlin类怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。