dataclassUser(valtoken: String,vallogoUrl: String) interfaceLoginCallback{ funonSuccess(user:User) funonFail(throws:Throwable) } interfaceVIPCallback{ funonSuccess(isVip:Boolean) funonFail(throws:Throwable) } interfaceLoadImgCallback{ funonSuccess(logoUrl:String) ...
借助sealed interface 我们可以给抽出 interface,并将 enum 进行层级拆分。更加清晰、亦不用担心重名。 sealed interface Actionenum class GameAction : Action {Start, Exit, Restart}enum class BirdAction : Action {Up, Down, HitGround, HitPipe, CrossedPipe}enum class PipeAction : Action {Move, Reset}en...
interfaceMyInterface{varname:String//name 属性, 抽象的funbar()funfoo(){//可选的方法体println("foo")}}classChild:MyInterface{overridevarname:String="runoob"//重写属性overridefunbar(){//方法体println("bar")}}funmain(args:Array<String>){valc=Child()c.foo();c.bar();println(c.name)} ...
在这个例子中,MyClass实现了MyInterface接口,并提供了abstractMethod()的具体实现。 3. 接口中的属性 接口可以包含属性声明,但属性不能保存状态(即接口中没有 backing field)。属性可以是抽象的(只声明没有实现)或具有默认实现。 interface MyInterface { val property: String // 抽象属性 val anotherProperty: Stri...
interfacePerson{// 提供了 name 属性 默认的 getter 实现val name:Stringget()="Tom"varage:Int// 该函数也提供了默认的实现funsayHello(){println("Person sayHello :")}}classStudent:Person{overridevarname:String="Tom"get()=super.nameset(_name:String){field=_name}overridevarage:Int=18override fun...
interface Intf{ //抽象属性 常量 , 默认被 abstract open 修饰 ( 可省略 ) abstract open val age : Int //抽象属性 变量 , 默认被 abstract open 修饰 ( 可省略 ) abstract open var name : String } 1. 2. 3. 4. 5. 6. 7. ② 省略的修饰符 ( 变量 / 常量 ) :接口中的属性和方法默认自带...
fun main(args: Array<String>) { var demo = Demo3(1,2) println(demo.sum()) } interface Demo3Interface{ val num1: Int val num2 : Int } class Demo3(override val num1: Int, override val num2: Int) : Demo3Interface{ fun sum() : Int{ return num1 + num2 } } 输出结果为: ...
(key:Key<*>):CoroutineContext=this...}publicinterfaceElement:CoroutineContext{//如果key和自己的key匹配,那么自己就是要删除的Element,返回EmptyCoroutineContext(表示删除了自己),否则说明自己不需要被删除,返回自己publicoverride funminusKey(key:Key<*>):CoroutineContext=if(this.key==key)EmptyCoroutineContext...
interface:仍然表示接口 final:取消,Kotlin的继承和Java不同,Java的类默认可继承,只有final修饰的类不能继承;Kotlin的类默认不能继承,只有为open修饰的类能继承 open:新增,作用见上一条 static:取消!Java用static去共享同一块内存空间,这是一个非常实用的设计,不过Kotlin移除了static,用伴随对象(前面提到过的compaion...
Kotlin使用关键字const(只能用于顶层和对象声明)和val(只读变量)来声明常量, const只能修饰属性(类属性、顶层属性),不能用于局部变量,再编译期间定下来,所以它的类型只能是String或基本类型。 例如: constvalPI=3.14valname:String="Kotlin" Kotlin数据类型转换方式更为简洁,例如: ...