使用方法在scala中覆盖自身

时间:2016-05-12 21:54:11

标签: scala oop method-overriding

scala中是否有方法在方法的实现中使用方法 m 重写相同的方法 m

这里的例子是我尝试过的(请注意,toUpperCase没有实现):

abstract class Person {
 def greet: String
}

class EnglishMan extends Person {
  abstract override def greet: String = 
  {
    return "hello"
  }
}

trait Angry extends Person {
abstract override def greet: String = 
{
  return toUpperCase(greet)
}

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

scala> trait Person { def greet: String }
defined trait Person

scala> class EnglishMan extends Person { def greet = "hello" }
defined class EnglishMan

scala> class Angry extends EnglishMan { override def greet = super.greet.toUpperCase }
defined class Angry

scala>

scala> new EnglishMan().greet
res3: String = hello

scala> new Angry().greet
res4: String = HELLO

请注意,trait Person与此练习完全无关。您可以调用超类的方法(即使覆盖那个方法),但是在同一个范围内不能有2个方法具有相同的名称(这对于编译器来说是不明确的)。