美文网首页
Android Kotlin 从0到1 之 类,函数的使用

Android Kotlin 从0到1 之 类,函数的使用

作者: Dreamboy_a2ef | 来源:发表于2017-06-08 14:50 被阅读0次

    阅读本篇你可以收获 Kotlin 类,函数,以及扩展函数的使用:

    类定义:
    接着上一篇的代码开始创建一个类,跟java 中相同需要使用 class 关键字,同样有一个默认的构造器

    class Person{}
    

    当需要自定义构造器时,构造函数的函数体你可以写在 init 块中:

    class Person(name:String,age:Int){
            init{
                 // 构造器的函数体  
            }
    }
    

    类继承:
    默认任何类都是基础继承自 Any (与java中的 Object 类似)在 Kotlin 中所有的类默认都是不可继承的(final),所以我们只能继承那些明确声明 open 或者 abstract 的类,继承的方式通过 ‘:’ 来实现

    open class Animal(name: String)
    class Person(name:String,age:Int) : Anumal(name)
    

    上方的代码可以看到,通过 open 设置类的权限,在Person 继承时,直接使用了自身构造器的 name 传递给了父构造器,当我们只有单个构造器时,我们需要在从父类继承下来的构造器中指定需要的参数。这是用来替换Java中的 super 调用的。

    类的调用:

     val p = Person()  // 不需要使用new关键字,直接类名() 就可以得到实例
    

    函数(java 中的方法):
    可以使用 fun 关键字定义

      fun  onCreate(){}
    

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

    fun onCreate() : Int {
          return 1
    }
    

    如果返回的结果可以使用一个表达式计算出来,你可以不使用括号而是使用等号:

    fun onCreate() :Int = 1+3
    

    我们还可以给参数指定一个默认值使得它们变得可选

    fun add(a:Int,b:Int = 10){ // 此处b的默认值就为10 }
    

    如你所见,第二个参数(b)指定了一个默认值。这意味着你调用的时候可以传入第二个值或者不传,这样可以避免你需要的重载函数


    函数的重写

      override fun add(){}
    

    在重写时添加关键字 override 并且被重写的方法必须是 open/ abstract 修饰的,与类一样函数默认也是final

    扩展函数的使用:
    Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,而不用修改原来的类。在使用前首先要配置一下Anko 类库,在你的Gradle 中添加(sync Now):

    compile 'org.jetbrains.anko:anko-sdk21:0.8.3'
    compile 'org.jetbrains.anko:anko-support-v4:0.8.3'
    compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' 
    

    我们现在为一个activity添加一个新函数,用于显示一个toast:

    fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){
        Toast.makeText(this, message, duration).show()
    }
    

    声明一个扩展函数很简单,只需要在函数名之前添加指定的类名即可。在调用时,该函数会以导入的方式添加到这个类中。并且我们可以在任何地方声明扩展函数比如在你的Util包中,定义完扩展函数我们就可以在任何Activity,或其子类中使用该方法(我们例子中是为Activity添加的扩展函数,要注意扩展函数并不是真正地修改了原来的类,它是以静态导入的方式来实现的。它可以被声明在任何文件中,因此有个通用的实践是把一系列有关的函数放在一个新建的文件里) 调用也很简单,在Activity中,跟调用普通方法一样:

    toast("这样写就能Toast")
    

    所有的Kotlin文章都是在学习过程中的一个记录,有不对的地方欢迎拍砖指正!!

    下一篇:从API中获取数据,发起一次简单请求!!
    http://www.jianshu.com/p/dabd77970e28

    相关文章

      网友评论

          本文标题:Android Kotlin 从0到1 之 类,函数的使用

          本文链接:https://www.haomeiwen.com/subject/fjttqxtx.html