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...
借助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...
子类调用父类方法 :子类中可以通过 super 调用父类的方法 , 包括普通方法 , 和属性访问的 setter 方法 ; 其中的 super 相当于父类对象的引用 ; 代码语言:javascript 代码运行次数:0 运行 AI代码解释 openclassFather{open funaction(){println("Father")}}classSon:Father(){override funaction(){//使用 supe...
name=$name")// 1}constructor(name:String,age:Int):this(name){println("People constructor, name=$name, age=$age")// 2}}classStudent:People{init{println("Student init, name=$name")// 3 (此处不能访问age和id)}constructor(name:String,age:Int,id:Int):super(name,...
publicinterfaceList<outE>:Collection<E>{override val size:Int override funisEmpty():Boolean override funcontains(element:@UnsafeVarianceE):Boolean override funiterator():Iterator<E>override funcontainsAll(elements:Collection<@UnsafeVarianceE>):Booleanpublicoperator funget(index:Int):EpublicfunindexOf(el...
sealed class 以及 1.5 里新增的 sealed interface 可谓是 Kotlin 语言的一大特色,其在类型判断、扩展和实现的限制场景里非常好用。 本文将从特点、场景和原理等角度综合分析 sealed 语法。 Sealed Class Sealed Interface Sealed Class & Interface VS Enum ...
public interface Flyer { intgetSpeed();voidkind();voidfly();publicstaticfinalclassDefaultImpls{publicstaticvoidfly(Flyer $this){ String var1 ="I can fly"; System.out.println(var1); } } } 我们发现Kotlin编译器是通过定义了一个静态内部类DefaultImpls来提供fly方法的默认实现的。同时,虽然Kotlin接...
KT-56779 Checkers false negative: AbstractMethodError when accessing setter via an interface where the member is defined as var, but it's val in implementation KT-51793 FIR: Investigate property+invoke resolution priorities KT-57003 FIR: missing annotation on parameter of data class' synthetic copy ...
@FunctionalInterface public interface Runnable { public abstract void run(); } 在Java 8中我们也通常称之为函数式接口。 Kotlin 支持 SAM 转换。Kotlin 的函数字面值可以被自动的转换成只有一个非默认方法的 Java 接口的实现,只要这个方法的参数类型能够与这个 Kotlin 函数的参数类型相匹配。 我们可以这样创建...
8 kotlin之interface和 abstract的使用 interfaceIDatabase{funconnect()funclose()}abstractclassDatabase(databaseName:String):IDatabase{valdatabaseName:String=databaseNamevarconnectString:String=""funshowInfo(){println("databaseName.:$databaseName")}}classOracle(connectString:String):Database("Oracle"){in...