kotlin中对象表达式

在kotlin中,也有类似的功能,但不是匿名类,而是对象,需要使用object关键字,对象要继承的列需要与object之间的冒号(:)分隔.

fun main(arg: Array<String>) {
    process(MyClass("bill"))//输出verify

    process(object : MyClass("bill") {
        override fun verify() {
            super.verify()//输出verify
            println("object verify")//输出object verify
        }
    })
}

open class MyClass(name: String) {
    open var name = name
    open fun verify() {
        println("verify")
    }
}

fun process(obj: MyClass) {
    obj.verify()
}

对象和类一样,只能有一个父类,但可以实现多个接口

fun main(arg: Array<String>) {
    process(MyClass("bill"))//输出verify

    process(object : MyClass("bill"),myInterface {
        override fun verify() {
            super.verify()//输出verify
            println("object verify")//输出object verify
        }
    })
}

open class MyClass(name: String) {
    open var name = name
    open fun verify() {
        println("verify")
    }

}

fun process(obj: MyClass) {
    obj.verify()
    if(obj is myInterface){
        obj.closeData()//输出closeData
    }
}

interface myInterface{
    fun closeData(){
        print("closeData")//输出closeData
    }
}

如果只想建立一个对象,不想任何的类型,也不实现任何的接口,如下:

fun too() {
    val adc = object {
        var x: Int = 1
    }
    print(adc.x)
}

原文地址:https://www.cnblogs.com/loaderman/p/10141983.html

时间: 2024-10-20 17:54:18

kotlin中对象表达式的相关文章

Kotlin 六 对象表达式和对象声明

一 对象表达式和对象声明 Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类. 对象表达式 通过对象表达式实现一个匿名内部类的对象用于方法的参数中: window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { // ... } override fun mouseEntered(e: MouseEvent) { /

Kotlin中when表达式的使用:超强的switch(KAD 13)

作者:Antonio Leiva 时间:Feb 23, 2017 原文链接:https://antonioleiva.com/when-expression-kotlin/ 在Java(特别是Java 6)中,switch表达式有很多的限制.除了针对短类型,它基本不能干其他事情. 然而,Kotlin中when表达式能够干你想用switch干的每件事,甚至更多. 实际上,在你的代码中,你可以用when替换复杂的if/else语句. Kotlin的when表达式 开始,你可以像switch那样使用w

Kotlin 对象表达式和对象声明

Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类. 对象表达式 通过对象表达式实现一个匿名内部类的对象用于方法的参数中: window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { // ... } override fun mouseEntered(e: MouseEvent) { // ... } }) 对象

从头认识Spring-2.6 在注解中使用表达式@Value(2)-使用表达式注入其他对象的值

这一章节我们来讨论一下在注解中使用表达式@Value,使用表达式注入其他对象的值. 1.domain 蛋糕类:只有一个public的名称 package com.raylee.my_new_spring.my_new_spring.ch02.topic_1_18; import org.springframework.beans.factory.annotation.Value; public class Cake { @Value("blueberry cheese cake") p

Kotlin基础-对象声明和表达式

/* * 有时候只是要对某个类进行轻微改造,供临时使用,避免继承 * 对象声明和表达式就很有用 *对面向对象编程的优化,避免一些继承导致的代价过高 * */ //对中国人来说,这个类,可能各省人适合继承 open class China(var name:String){ open val skin="yellow" } fun main(args: Array<String>) { //但如果外国人入籍,就不适合用继承 //对象表达式:val 对象名=object:类,接

kotlin对象表达式

1.概念 ? kotlin使用对象表达式代替java的匿名内部类语法. ? 语法格式: object : [0-N个父类型] { } 2.特点 对象表达式不能是抽象类: 对象表达式不能定义构造器: 对象表达式可以包含内部类(inner),但不能包含嵌套类: 对象表达式可以访问或修改所在局部范围的变量(相比之下,java只能访问effectivley final局部变量). 3.定义对象表达式 fun main() { var localParam = 1 /** * 定义一个对象表达式,实现了S

在Kotlin中使用注释处理Android框架 kapt

本教程介绍如何在 Kotlin 中使用依赖于注释处理的流行的 Android 框架和库. 在日常 Android 开发中,流行着数以千计的框架帮助我们提升开发效率. 使用 Kotlin 开发时仍然可以沿用这些框架,而且和使用 Java 同样简单. 本章教程将提供相关示例并重点介绍配置的差异. 教程以 Dagger. Butterknife. Data Binding. Auto-parcel 以及 DBFlow 为例(其它框架配置基本类似). 以上框架均基于注解处理方式工作:通过对代码注解自动生

Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)

作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式函数,所以它是Kotlin和任何其他现代开发语言的最强工具之一. 在Java6中,我们仅能下面方法这样做:通过用单一方法声明接口,并用匿名对象实现那些接口. Lambda表达式特别是在Kotlin中能定义的方式,为我们开启无线可能的世界.在接下来的内容中,我们将了解这些用法. Kotlin的Lamb

浅谈Kotlin中的函数

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw作者:连凌能 Kotlin,已经被Android官方宣布 kotlin first 的存在,去翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin.Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常. 本文简单谈下Kotlin中的函数,包括表达式函数体,命名参数,默认参数,顶层函数