Учитывая эту ситуацию:
interface Interfaz
{
void M1();
}
abstract class ClaseAbstracta : Interfaz
{
public void M1() { }
public abstract Boolean M2();
}
class ClaseConcreta : ClaseAbstracta
{
public override Boolean M2() { return false; }
public virtual void M3(Int32 i) { }
public void M4() { }
}
Я также делаю:
ClaseConcreta concretaCast = (ClaseConcreta) abst;
Может ли concretaCast.M2()
быть проанализирован статически?
Например, он имеет override
, поэтому кажется, что не может, но когда вы видите M2()
, это фактически конкретная реализация.
Так это статически анализируемый или каждый раз, когда он имеет переопределение, он должен делать это динамически во время выполнения?