Why it is not possible to override mutable variable in scala?

前端 未结 5 1604
余生分开走
余生分开走 2020-12-30 04:27

Why it is not possible to override mutable variable in scala ?

class Abs(var name: String){
}

class AbsImpl(override var name: String) extends Abs(name){
}
         


        
5条回答
  •  既然无缘
    2020-12-30 05:26

    This happens when the var you are trying to override already has an assignment. I am not sure why this is forbidden, but also it makes little sense.

    See also this question.

    Define name as abstract instead

    trait Abs {
      var name: String
    }
    
    class AbsImpl(name0: String) extends Abs {
      var name = name0
    }
    

    or

    trait Abs {
      var name: String
    }
    
    class AbsImpl(private var name0: String) extends Abs {
      def name = {
        println("getter")
        name0
      }
    
      def name_=(value: String) = {
        println("setter")
        name0 = value
      }
    }
    

提交回复
热议问题