kotlin--类与函数

来源:互联网 发布:音效软件哪个最好 编辑:程序博客网 时间:2024/06/05 13:34

如何定义一个类?你只需要一个class关键字

class MainActivity{}

它有一个默认唯一的构造器, 大部分情况下你只需要这个默认的构造器,(可创建额外的构造器), 你只需要在类名后面加上它的参数, 如果这个类没有任何内容, 可以省去大括号:

class Person(name: String,surName:String)

构造函数体可以写在 init块中 :

class Person (name : String , surname:String ){init{    }}

‘类继承:’

默认的任何类都继承自Any(类似Java 中的 Object), 但是我们可以继承其他类, 所有的类默认都是不可以被继承的(final), 所以我们只能继承那些明确声明 open 或 abstract 的类:

open class Animal(name : String )class Person (name :  String , surname: String ) : Animal(name)

当我们只有单个构造器时,我们需要从父类继承下来的构造器中指定需要的参数, 这是用来替换Java中的Super调用的.

函数

函数可以直接使用 fun 关键字就可以定义

fun onCreate(saveInstanceState : Bundle ?){}

如果你没有指定它的返回值, 它就会返回 Unit, 与Java 中的 void 相似, 但是 Unit 是一个真实的对象, 你也可以指定任何其他的返回类型:

fun add(x: int , y : int ){return x+y}

然而如果你的返回结果可以使用一个表达式计算出来, 可以这样写:

fun add (x:int ,y:int ): Int = x+y

构造方法和函数参数
Kotlin 中的参数与Java 不同, 先写参数, 再写参数类型:

fun add(x: Int, y: Int) : Int {    return x + y}

我们可以指定一个默认值,使参数变得可选:

fun toast(message: String,length: Int = Toast.LENGTH.SHORT){    Toast.makeText(this,message,length).show()}

如上代码, 给第二个参数设置了一个默认值.这意味着在调用方法的时候第二个参数可以不传, 这样可以避免你需要重载的函数:

toast("Hello!")toast("Hello!",Toast.LENGTH.LONG)

再看如下例子:

fun niceToast(message : String             tag:String = javaClass<MainActivity>.getSimpleName(),            length:int = Toast.length.short){    Toast.makeText(this,["$className] $message",length).show();}

增加了第三个默认值是 类名的 tag 参数, 如果再java 中总数开销会以几何增长, 现在可以通过以下方式调用:

toast("hello")toast("hello","MyTag")toast("hello","MyTag",Toast.LENGTH.LONG,)

其他调用方式: 可以使用参数名来调用,这表示你可以通过在值前写参数名来传入你希望的参数:

toast(message = "hello",length = "Toast.LENGTH.LONG")