AndroidKotlin全面详细类使用语法学习指南

目录

前言

1. 类的声明 & 实例化

2. 构造函数

2.1 主构造函数

2.2 次构造函数

3. 类的属性

4. 可见性修饰符

5. 继承 & 重写

6. 特殊类

6.1 嵌套类(内部类)

6.2 接口

6.3 数据类

6.4 枚举类

总结

前言

Kotlin被Google官方认为是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默认 = 26 var 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() // 调用次构造函数1 User(2) // 调用次构造函数2 User("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继承类Food class Fruits : Food()

对于子类重写父类的方法,在Kotlin中,方法也是默认不可重写的

若子类要重写父类中的方法,则需在父类的方法前面加open关键字,然后在子类重写的方法前加override关键字

// 父类 // 在类 & 方法前都加了关键字open,为了被继承 & 方法重写 open class Food { open fun banana() {} } // 子类 class Fruits : Food(){ // 重写了父类的方法 override fun banana() { super.banana() } } 6. 特殊类

下面将讲解一些特殊的类:

嵌套类(内部类)

接口

数据类

枚举类

6.1 嵌套类(内部类) /** * 1. 嵌套类(内部类) * 标识:关键字inner * 使用:通过外部类的实例调用嵌套类 */ class User { var age: Int = 0 inner class UserName { } } var userName: User.UserName = User().UserName() 6.2 接口 /** * 2. 接口 * 标识:关键字interface */ // 声明 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 数据类 /** * 3. 数据类 * 作用:保存数据 * 标识:关键字data */ // 使用:创建类时会自动创建以下方法: // 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 枚举类 /** * 4. 枚举类 * 标识:关键字enum */ // 定义 enum class Color { RED, GREEN, BLUE } // 为枚举类指定值 enum class Color(rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }

至此,关于kotlin入门语法中的类使用讲解完毕。

总结

本文全面介绍了Kotlin入门语法中的类

以上就是Android Kotlin全面详细类使用语法学习指南的详细内容,更多关于Android Kotlin类语法的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    这句话有语法错误

    这句话有语法错误,点心,英语,本文目录这句话有语法错误瑞士最好的化妆品品牌有哪些请英语高手帮忙翻译点心英语怎么说这句话用英语该怎么

    Sublime Text3下,实现函数声明的跳转

    Sublime Text3下,实现函数声明的跳转,插件,括号,用了ST3很久,觉得这编辑器特别顺手好用。项目是Cocos2d-x + Lua。可惜的是,ST3不支持函数声

    1-Vue构造函数的生成

    1-Vue构造函数的生成,函数,属性,版本:@2.6.10环境:web ;思维图:www.processon.com/view/link/5…我们使用的Vue是一个经过层层加强的构造函数

    understand怎么用语法是什么

    understand怎么用语法是什么,形容词,动词,本文目录understand怎么用语法是什么understandable是什么意思understand的形容词是什么compreh

    Markdown语法 轻编辑入门指南

    Markdown语法 轻编辑入门指南,语法,列表,文字,灵感,格式,文本,  Markdown是一种用来写作的轻量级标记语言,是让你专注写作内容的利器。在Mark

    oracle 存储过程的基本语法

    oracle 存储过程的基本语法,存储过程,变量,语法,常用,参数,名字,oracle 存储过程oracle 存储过程的很多语法可能大多数朋友并不是很了解,下面就

    PostgreSQL 添加各种约束语法

    PostgreSQL 添加各种约束语法,字段,自动更新,1. 添加主键alter table goods add primary key(sid);2. 添加外键alter table orders add fo

    小程序语法

    小程序语法,程序,宽度,小程序的屏幕宽固定为 750rpx (即750个物理像素)让小程序内容在同一行<view class="line"> <view wx:for="{{