覆盖抽象类中的变量的麻烦

时间:2016-02-23 15:27:08

标签: scala

我是scala的新手,并且有关于覆盖抽象类中变量的以下问题。

abstract class ExampleClass1 {
    val testVar = (i: String) => {
        i + " A"
    }

    def exampleMethod1() = {
        print testVar
    }
}

object ExampleObject1 extends ExampleClass1 {
    def getExampleValue() = {
        exampleMethod1()
    }
}

ExampleClass1和ExampleObject1在一个模块中。我的模块正在调用ExampleObject1.getExampleValue。我想在ExampleClass1中更改testVar的行为。是否可以在不更改ExampleObjectt1的情况下执行此操作?

谢谢

1 个答案:

答案 0 :(得分:0)

如果要在实例化类之后更改值,则应使用var而不是val,但如果没有任何进一步的信息,您的设计中似乎存在缺陷。< / p>

如果要在创建对象时设置给定字符串的值,可以使用以下内容:

scala> abstract class ExampleClass1(val i: String)
defined class ExampleClass1
scala> object ExampleObject1 extends ExampleClass1("A")
defined object ExampleObject1
scala> ExampleObject1.i
res1: String = A

或者如果你想使用给定的字符串作为参数:

scala> abstract class ExampleClass2 {
 | def test(i: String) = i + " A"
 | }
defined class ExampleClass2
scala> object ExampleObject2 extends ExampleClass2
defined object ExampleObject2
scala> ExampleObject2.test("B")
res2: String = B A

你的目标是什么?