Я пытаюсь определить признак, который использует соответствующий объект-компаньон, то есть объект-компонент класса с использованием признака.scala: определение признака и ссылка на соответствующий объект-компаньон
, например, у меня есть:
:paste
class Parent {
def callMyCompanion = print(Parent.salute)
}
object Parent {
def salute = "Hello from Parent companion object"
}
class Child extends Parent {
}
object Child {
def salute = "Hello from Child companion object"
}
А затем создать родительский объект:
scala> val p = new Parent()
p: Parent = [email protected]
scala> p.callMyCompanion
Hello from Parent companion object
Но с ребенком:
scala> val c = new Child()
c: Child = [email protected]
scala> c.callMyCompanion
Hello from Parent companion object
Я хотел бы получить : Hello from Child companion object
Как я могу это достичь ???
- редактирование уточнить
Спасибо за ваши ответы, но в этом случае callMyCompanion фиктивный метод, который я создал только объяснить себе, я пытаюсь повторно родительский метод без необходимости заменить его во всех класс, который реализует его ...
решение, которое я нашел до сих пор было реализовать метод экземпляра, который использует спутник obejct ...
Почему вы не переопределяете метод 'callMyCompanion' в классе' Child'? –
Я отредактировал вопрос, чтобы уточнить, что – opensas
Каков ваш конкретный прецедент? Может ли это быть лучше с помощью типов? – drexin