trait T1 { fun foo() } enum class EnumImplementingTraitWithFun: T1 { E1 { override fun foo() {} } E2 } trait T2 { val bar: Int } enum class EnumImplementingTraitWithVal: T2 { E1 { override val bar = 1 } E2 }