Kotlin编程之伴生对象,抽象类,密封类

来源:互联网 发布:美工面试问题及答案 编辑:程序博客网 时间:2024/04/27 21:53

Kotlin编程相关知识点介绍

  • Kotlin编程之使用Intellij IED和了解源文件(.kt)
  • Kotlin编程之类的介绍和使用
  • Kotlin编程之类的属性
  • Kotlin编程之方法
  • Kotlin编程之父类和继承父类
  • Kotlin编程之接口和实现接口

本篇概括:

  • 伴生对象
  • 抽象类
  • 密封类

伴生对象


package com.xingen.kotlin.day2017531fun main(args: Array<String>) {    Test.instance.test()    Test.test1()}class  Test {     fun test() {         println("伴生对象的静态调用对象,通过对象再调用方法")    }    companion object  Factory{ // 伴生对象        var instance =Test()        fun  test1(){            println("伴生对象的静态调用方法")        }    }}

输出结果:

伴生对象的静态调用对象,通过对象再调用方法伴生对象的静态调用方法

可知

  • 伴生对象可以实现静态调用,通过类名.属性名或者类名.方法名进行调用。

抽象类


package com.xingen.kotlin.day2017531fun main(args: Array<String>) {    Test.instance.test()     Test.instance.test1()}/** * 定义一个抽象类 * *   1. 抽象类中有抽象方法,方法的实现。 *   2. 抽象类和抽象方法是默认open关键字修饰的 */abstract  class TestAbstract{    var v="抽象类中属性"    abstract fun  test()    fun test1(){              println("抽象类中方法的实现")    }}class  Test :TestAbstract(){    override fun test() {       println("一个抽象类的子类中使用 $v")    }    companion object  Factory{//伴生对象        var instance :TestAbstract=Test()    }}

输出结果:

一个抽象类的子类中使用 抽象类中属性抽象类中方法的实现

可知

  • 抽象类和抽象方法是默认open关键字修饰的
  • 抽象类有抽象方法和方法的实现,可以有成员属性

密封类


通常与When语句一起使用,确保声明到所有的情形,不需要使用else语句。

在一个源文件(.kt),编写以下代码:

package com.xingen.kotlin/** * Created by ${新根} on 2017/5/24 0024. * 博客:http://blog.csdn.net/hexingen */fun main(str: Array<String>) {    test( BaseClass.Test1() )    test( BaseClass.Test2() )    test( BaseClass.Test3 )}/** * 使用when表达式 */fun test(instance: BaseClass)=when(instance){    is BaseClass.Test1-> instance.test()    is BaseClass.Test2-> instance.test()    is BaseClass.Test3->instance.test()}/** * * sealed修饰符修饰密封类。 * * 密封类内部含有多个子类。 */sealed class BaseClass {    class Test1 : BaseClass() {        override fun test() {            println("Test1实例")        }    }    class Test2 : BaseClass() {        override fun test() {            println("Test2实例")        }    }    object Test3 : BaseClass() {        override fun test() {            println("Test3实例")        }    }    open fun test() {        println("BaseClass实例")    }}

输出如下:

Test1实例Test2实例Test3实例
原创粉丝点击