kotlin接口,伴生对象(静态or非静态)的笔记

kotlin接口的笔记,如何用类C实现了相同名字的方法的接口和继承相同名字方法的接口,使用super关键字

interface  A{
    fun method(){
        println("我是A")
    }
}
open class B{
    open fun method() {
        println("我是B")
    }
}
//C继承了B,实现了A
class C : A, B() {
    override fun method() {
        super<A>.method()
        super<B>.method()
    }
}

fun main(args: Array<String>) {
    val c = C()
    c.method()
}


output:
我是A
我是B

对象的声明还有伴生对象作为类的内部类的分析

//对象声明
object MyObject {
    fun say() {
        println("我是一个对象")
    }
}

fun main(args: Array<String>) {
    MyObject.say()
    println("")
    Tree3.say()
    println(Tree3.seed)
    println("")
    //不用构建实例对象,即可直接调用伴生对象
    val t = Tree3.Companion
    //输出伴生对象实例,是Tree3的内部类
    println(t.javaClass)
    //调用伴生对象的两种形式的方法,可通过反编译查看
    // 其Trees对象的结构,静态or非静态方法,属性
    //@Jvmstatic注解实现非静态到静态的转变
    //当然,调用实例或调用静态方法在Kotlin里是一样的
    Trees.mehthod()
    Trees.mehthod2()


}

//伴生对象
class Tree3 {
    companion object {
        var seed:Int = 100
        fun say() {
            println("我是树的伴生对象")
        }
    }
}

class Trees {
    companion object {
        fun mehthod() {
            println("伴生对象实例方法")
        }
        @JvmStatic
        fun mehthod2() {
            println("伴生对象静态方法")
        }
    }
}


output:
我是一个对象

我是树的伴生对象
100

class com.haha.Interface.Tree3$Companion
伴生对象实例方法
伴生对象静态方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin中,每个类都可以有一个伴生对象伴生对象是与类绑定在一起的对象,可以访问类的所有成员,包括私有成员。伴生对象可以访问类的私有构造函数和属性,因此可以用来实现工厂方法。下面详细讲解Kotlin伴生对象的使用。 ### 创建伴生对象Kotlin中,我们使用`companion object`关键字来创建伴生对象伴生对象可以有一个可选的名称,如果没有指定名称,则默认名称为`Companion`。 ```kotlin class MyClass { companion object { // ... } } ``` ### 访问伴生对象 我们可以通过类名来访问伴生对象的成员,就像访问静态成员一样。 ```kotlin MyClass.Companion.someMethod() ``` 或者,我们可以省略`Companion`名称。 ```kotlin MyClass.someMethod() ``` ### 伴生对象的初始化 伴生对象可以拥有自己的初始化代码块,就像类一样。 ```kotlin class MyClass { companion object { init { // 初始化代码 } } } ``` ### 使用伴生对象实现工厂方法 伴生对象常用于实现工厂方法。我们可以在伴生对象中定义一个工厂方法来创建类的实例。 ```kotlin class MyClass private constructor(val value: Int) { companion object { fun create(): MyClass { return MyClass(42) } } } ``` 在上面的例子中,我们定义了一个私有构造函数,然后在伴生对象中定义了一个工厂方法`create()`来创建类的实例。由于构造函数是私有的,因此不能直接使用`MyClass()`来创建类的实例,只能通过`MyClass.create()`来创建类的实例。 ### 伴生对象的扩展 我们可以在伴生对象中定义扩展函数,就像在类中定义扩展函数一样。 ```kotlin class MyClass { companion object { fun create(): MyClass { return MyClass(42) } } } fun MyClass.Companion.someExtension() { // ... } ``` 上面的代码中,我们在伴生对象中定义了一个工厂方法`create()`和一个扩展函数`someExtension()`。我们可以通过类名来调用这些方法,例如`MyClass.create()`和`MyClass.someExtension()`。 ### 总结 Kotlin中的伴生对象是与类绑定在一起的对象,可以访问类的所有成员,包括私有成员。伴生对象可以用于实现工厂方法、定义扩展函数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值