Overriding vals in Scala

后端 未结 2 1078
野性不改
野性不改 2020-12-17 05:27

I have tried to override val in Scala as this:

trait T{
  val str: String
}

sealed abstract class Test extends T{
  val str: String = \"str\"
}

class Test1         


        
2条回答
  •  孤街浪徒
    2020-12-17 05:59

    Scala compiler does not allow to use super on a val. If you are not caring about re-evaluation, you can just use def instead.

    trait T{
      def str: String
    }
    
    sealed abstract class Test extends T{
      def str: String = "str"
    }
    
    class Test1 extends Test{
      def str = super.str + "test1" //super may not be used on value str
    }
    
    defined trait T
    defined class Test
    defined class Test1
    

提交回复
热议问题