kotlin 构造函数几种形式

open class Parent {
    constructor(name: String) {
        // 构造函数实现
    }
 
    constructor(name: String, age: Int) {
        // 构造函数实现
    }
}
 
class Child : Parent {
    constructor(name: String) : super(name) {
        // 子类构造函数实现
    }
 
    constructor(name: String, age: Int) : super(name, age) {
        // 子类构造函数实现
    }
}
class MediaGridSpacingItemDecoration1 : RecyclerView.ItemDecoration {
    private val DIRECTION_HORIZONTAL = 0
    private val DIRECTION_VERTICAL = 1
    private var mDirection // horizontal or vertical
            = 0
    private var mSpanCount = 0
    private var mOffset = 0
    private val mSpacing = 0
    private var mHspacing = 0
    private var mVspacing = 0
    private var mIncludeEdge = false


    public constructor(
        direction: Int, spanCount: Int, offset: Int, hspacing: Int,
        vspacing: Int, includeEdge: Boolean) : super(){
        mDirection = direction
        mSpanCount = spanCount
        mOffset = offset
        mHspacing = hspacing
        mVspacing = vspacing
        mIncludeEdge = includeEdge
    }

    public constructor(
        direction: Int) : this(direction, 0, 0, 0 ,0 ,false)
}

class SettingEditText @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
    AppCompatEditText(context, attrs, defStyleAttr) {

    init {
        init()
    }

    fun init() {
        customSelectionActionModeCallback = object : ActionMode.Callback {
            override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
                val size = menu.size()
                for (i in 0 until size) {
                    val item = menu.getItem(i)
                    val itemId = item.itemId
                    if (itemId != R.id.cut && itemId != R.id.copy && itemId != R.id.selectAll && itemId != R.id.paste) {
                        item.isVisible = false
                    }
                }
                return true
            }

            override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
                return false
            }

            override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
                return false
            }

            override fun onDestroyActionMode(mode: ActionMode) {}
        }
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin 中,构造函数用于创建类的实例。Kotlin 中的构造函数有两种类型:主构造函数和次构造函数。 1. 主构造函数: - 主构造函数是类头的一部分,它跟在类名后面。 - 主构造函数可以包含参数,这些参数可以在类的初始化过程中使用。 - 主构造函数可以有可见性修饰符(如 `public`、`private` 等)。 - 主构造函数没有主体,它的逻辑被放在初始化块中。 下面是一个使用主构造函数的示例: ```kotlin class Person(firstName: String, lastName: String) { init { println("Creating a person: $firstName $lastName") } } ``` 在上面的示例中,`Person` 类有一个主构造函数,它接受 `firstName` 和 `lastName` 作为参数。在初始化块中,我们打印出正在创建的人的信息。 2. 次构造函数: - 次构造函数是可选的,在类中可以定义多个次构造函数。 - 次构造函数必须通过 `constructor` 关键字声明。 - 次构造函数可以调用主构造函数或其他次构造函数。 下面是一个使用次构造函数的示例: ```kotlin class Person(firstName: String, lastName: String) { init { println("Creating a person: $firstName $lastName") } constructor(firstName: String) : this(firstName, "") { println("Creating a person with only first name: $firstName") } } ``` 在上面的示例中,`Person` 类有一个主构造函数和一个次构造函数。次构造函数只接受 `firstName` 参数,并调用了主构造函数来初始化 `lastName`。 这是关于 Kotlin 构造函数的简单介绍。希望对你有帮助!如有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值