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类语法的资料请关注脚本之家其它相关文章!

  您可能感兴趣的文章: