Android Kotlin全面详细类使用语法学习指南
目录
前言
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 主构造函数
class 类名 constructor(参数名:参数类型){
init {
//...
}
}
// 示例
class User constructor(userName: String) {
init {
//...
}
}
// 注:若主构造函数无任何注解 / 可见性修饰符,可省略 constructor 关键字
class 类名(参数名:参数类型){
init {
//...
}
}
// 示例
class User (userName: String) {
init {
//...
}
}
2.2 次构造函数
// 形式
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. 继承 & 重写
// 用open关键字标识该类允许被继承
open class Food
// 类Fruits继承类Food
class Fruits : Food()
// 父类
// 在类 & 方法前都加了关键字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语法中的类,更多关于Android Kotlin类语法的资料请关注脚本之家其它相关文章!
您可能感兴趣的文章:
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播
相关文章
- Android LayoutParams使用案例详解
- Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】
- 360手机浏览器抢票版(360手机抢票软件) for Android v10.1.2.200 最新安卓版
- Android常用三方库混淆规则整理(小结)
- Android中Snackbar的使用方法及小技巧
- B站小视频 for Android v3.2.0.00 安卓版
- 5sing电台 5sing中国原创音乐基地 for Android v5.8.4 安卓版
- Android中的HOOK技术是什么
- Android百度定位导航之基于百度地图移动获取位置和自动定位
- Android布局中gravity与layout_gravity属性说明