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

Kotlin编程相关知识点介绍


本篇概括:

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

伴生对象


package com.xingen.kotlin.day2017531

fun 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.day2017531

fun 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实例

在这里插入图片描述
在这里插入图片描述
密封类,本质是一个抽象类,其里面的类是其子类。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值