天天看点

Android与Kotlin常用-类与方法类嵌套类与内部类

文章目录

    • 类只有无参一个造函数
    • 类有一个构造函数,有参
      • get/set手动写法
    • 类有多个构造函数
    • 继承
    • 覆盖
  • 嵌套类与内部类
    • 嵌套类
    • 内部类
    • 静态方法
    • 方法参数
    • 方法返回值

  • 声明,也是class

类只有无参一个造函数

class User { }
           

类有一个构造函数,有参

class User(age: Int, name: String) {
	val mName = name
}
           

使用的时候

var user =User(1,"ming")
user.mName
           

默认属性有get,set方法

val修饰的属性不提供set方法

get/set手动写法

class User(age: Int, name: String) {
    var mName = name
        get() = field
        set(value) {
            field = value
        }
}
           

类有多个构造函数

  • 一个类可以有一个主构造函数,多个次构造函数
  • 主构造函数跟在类名后面
  • 次构造函数使用constructor修饰
    class Person {
          var children: MutableList<Person> = mutableListOf<Person>();
          /**
          * 次构造函数
          */
          constructor(parent: Person) {
              parent.children.add(this)
          }
      }
               

继承

一个类如果要可以被继承,需要使用open修饰,比如

open class User(age: Int, name: String) {  }
           

覆盖

要覆盖类中的属性或者方法,都要使用open来修饰,比如:

open class User(age: Int, name: String) {
    open var address = ""
    open fun run(){
    
    }
}
           

嵌套类与内部类

Java中的内部类直接写class就行,kotlin中:

  1. 直接class是嵌套类;
  2. 使用inner class修饰的是内部类,内部类调用外部类方法使用[email protected]

嵌套类

class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}
// 其他类调用的时候
val demo = Outer.Nested().foo() // == 2	
           

内部类

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}
// 其他类调用的时候
val demo = Outer().Inner().foo() // == 1
           

静态方法

companion object{
    fun request(){
        
    }
}
           

方法参数

在kotlin中,方法的参数默认是val,不可变的。且只有构造函数可以设置参数为val或者var的。一般函数不可设置。

方法返回值

fun t():String{
    return ""
}
           
  • 返回值跟在后面