Короткий ответ на ваш вопрос: вам нужно ввести consoleGivenMessage(text: string)
в FirstClass
, чтобы вы могли вызывать его как в случаях FirstClass
, так и SecondClass
.
Однако, есть и другое -
В большинстве случаев вы вызываете унаследованный метод из производного класса, а не наоборот.Но у вас также может быть базовый класс, который зависит от abstract метода, который реализован в производном классе.
Скажем, у вас есть класс A
, который зависит от метода DoIt()
, который реализован только в производном классе B
, вы должны объявить A
как абстрактный класс и DoIt()
как абстрактный метод;затем в B
(который не является абстрактным, то есть конкретным) вы реализуете метод DoIt
().
Это также означает, что вы не можете создать экземпляр объекта A
потому что он не завершен без полной реализации DoIt
, но вы можете создать экземпляр объекта B
.Тем не менее, вы можете определить объект A
, например: const a: A = new B()
.И вы можете позвонить a.DoIt()
.В этом случае реализация B.DoIt()
будет фактически вызвана.
Этот метод используется в шаблоне проектирования Template Method .
Классы TypeScript, наследование и абстрактные классы хорошо документированы .