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

目录
  • 前言
  • 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类语法的资料请关注我们其它相关文章!

时间: 2022-06-21

Android Kotlin开发实例(Hello World!)及语法详解

Android Kotlin开发实例及语法详解 前言 Kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言.该语言有几个优势 1. 简洁 它大大减少你需要写的样板代码的数量. 2. 安全 避免空指针异常等整个类的错误. 3. 通用 构建服务器端程序.Android 应用程序或者在浏览器中运行的前端程序. 4. 互操作性 通过 100% Java 互操作性,利用 JVM 既有框架和库. 配置 在我们的AndroidS

Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结

Kotlin语法学习-变量定义.函数扩展.Parcelable序列化等简单总结 今年 Google I/O 2017 开发者大会中,Google 宣布正式把 Kotlin 纳入 Android 程序的官方一级开发语言(First-class language),作为Android开发者,当然要逐步熟悉这门语言,第一步就要从语法开始学习. 在这之前,我们需要了解怎么使用Kotlin编写一个Android应用.对于Android Studio 3.0版本,我们在创建工程的时候直接勾选 Include

Android Studio kotlin生成编辑类注释代码

更新了AS 3.1.2之后,发现新建Kotlin类,类注释依然木有,没办法只有自己动手了. 方法很简单,编辑File Header就可以啦. 只需要编辑自己想要的模板就可以啦. /** * @Author ${USER} * @Date ${DATE}-${TIME} * @Email chrisSpringSmell@gmail.com */ 支持的动态命令不多,只有一些简单的命令. 新建类效果: 补充知识:Android Studio javadoc 生成注释文档 相信大家刚开始写代码的时候

Android Kotlin的使用及简单实例

Android Kotlin的使用及简单实例 写在前面的话,作为一个不熬夜的人,一觉醒来发现Kotlin成为了Android的官方语言,可谓是大喜过望.为了趁热打铁,我决定提前三天放出原定本周日Release的文章.希望能及时让大家了解一下Kotlin. 相信很多开发人员,尤其是Android开发者都会或多或少听说过Kotlin,当然如果没有听过或者不熟悉也没有关系.因为本篇文章以及博客后期的内容会涉及到很多关于Kotlin的知识分享. 在写这篇文章前的一个多月,Flipboard中国的Andr

使用 Lambda 取代 Android 中的匿名类

Lambda是第十一个希腊字母,大写Λ,小写λ,额,跑题了-Lambda表达式 是Java8的新特性之一: Lambda表达式 函数式接口 流API 默认方法 新的Date Time API Lambda表达式 取代了匿名类 ,取消了模板,允许用函数式风格编写代码. 由于最近接触了RxJava,遇到了Lambda,立马就喜欢上了~所以就学习了一下. 本文主要介绍一下Lambda在Android中替代匿名类的部分使用场景. 在Android中使用Lambda gradle-retrolambda

Android相机管理工具类

本文实例为大家分享了Android相机管理工具类的具体代码,供大家参考,具体内容如下 package com.utils.tools; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import com.shennongshi.dingdong.R; import com.shennongshi.dingdong.pztools.IntentConstant.R

Kotlin 的注解类详解及实例

Kotlin 的注解类详解及实例 注解声明 注解是将元数据附加到代码的方法.要声明注解,请将 annotation 修饰符放在类的前面: annotation class Fancy 注解的附加属性可以通过用元注解标注注解类来指定: @Target 指定可以用 该注解标注的元素的可能的类型(类.函数.属性.表达式等): @Retention 指定该注解是否 存储在编译后的 class 文件中,以及它在运行时能否通过反射可见 (默认都是 true): @Repeatable 允许 在单个元素上多次

Android手机管理工具类详解

Android手机管理工具类 AppPhoneMgr分享给大家,供大家参考,具体内容如下 工具类内的方法: getInstance          : 单例对象 getSDKVersionNumber  : 获取手机系统版本号 getPhoneModel        : 获取手机型号 getPhoneWidth        : 获取手机宽度 getPhoneHeight       : 获取手机高度 getPhoneImei         : 获取手机imei串号 ,GSM手机的 IME

Android Zip解压缩工具类分享

本文实例为大家分享了Android Zip解压缩工具类的具体代码,供大家参考,具体内容如下 package com.example.zip.commons.utils; import android.util.Log; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList

Android图片处理工具类BitmapUtils

Android图片的处理工具类BitmapUtils,供大家参考,具体内容如下 项目中经常会用到图片,所以在这先简单的总结一下.闲言少叙,上代码. package com.lvstudio.myapp.utils; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import