如何从派生类访问数组元素

时间:2019-02-26 18:41:25

标签: kotlin

我上过课:

class A { MutableList<B> array1 = mutableListOf() }

class B { }

class Ba : B { MutableList<C> array2 = mutableListOf() }

class C { var name: String }

在我的主要职能中,我做到了:

val itemA = A()
val itemBa = Ba()
itemBa.array2.add(C("name"))
itemA.array1.add(ItemBa)

for(arr1 in itemA.array1)
   for(arr2el in arr1.array2)
      print(arr2el.name)

但是,当我尝试通过itemA元素从array2打印元素时,出现错误Unresolved Reference,好像我无法获取array2。但是将元素添加到array2效果很好。有可能这样做吗?或者做这种事情的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

MutableList<B> array1 = mutableListOf()

包含B个元素。

class Ba : B { MutableList<C> array2 = mutableListOf() }

array2定义了Ba列表。
B的签名不公开成员或方法,因此您不能指望它起作用。

val itemBa = Ba()
itemBa.array2.add(C("name"))

这里插入工作正常,因为您正在使用Ba签名,该签名公开了其成员array2