繁体   English   中英

有没有办法在抽象类和它的实现类之间共享数据而不使用 Kotlin 中的伴随对象

[英]Is there a way to share data between an abstract class and it's implementation classes without using companion object in Kotlin

我有一个名为Animal的类,它是一个抽象类。

abstract class Animal {

 protected var totalAnimals = 0

 fun provideTotalAnimals(totalAnimals: Int) {
  this.totalAnimals = totalAnimals
 }

}

现在有另一个类正在扩展Animal says a Dog

class Dog: Animal() {
 
 fun printTotalDogsAndAnimals(totalDogs: Int) {
  val totalAnimals = totalDogs + totalAnimals 
  println("Total Animals: $totalAnimals")
 }
}

由于我正在扩展Animal类,因此我能够掌握totalAnimals 但是,问题在于,无论如何, totalAnimals将始终为 0。 我通过将totalAnimals放在Animal类的伴生对象中来解决这个问题。 但是,我想知道是否有更好的方法来共享来自抽象类及其实现类的数据,而不使用伴随对象。 我正在研究一种更好的方式来设计我的课程。

您应该重写抽象类的函数来设置 totalAnimals 值。 在您的情况下,您正在为 0 添加一些值并打印它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM