Я могу препятствовать тому, чтобы наследованный виртуальный метод был переопределен в подклассах?

Вы можете изменить свой тип экземпляра EC2 в любое время. Процесс

  • останавливает ваш тип экземпляра EC2
  • меняет тип экземпляра
  • запускает экземпляр EC2

Вы можете остановить / запустите и измените тип экземпляра в консоли, CLI или с помощью API AWS.

Подробности здесь. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html

. Существует пара правил совместимости. следовать (например, вы не можете изменить тип экземпляра с 32-битного процессора на 64-битный процессор). Правила в док.

15
задан TrolleFar 4 September 2008 в 11:27
поделиться

6 ответов

Можно изолировать отдельные методы препятствовать тому, чтобы они были переопределяемыми:

public sealed override void Render()
{
    // Prepare the object for rendering        
    SpecialRender();
    // Do some cleanup    
}
32
ответ дан 1 December 2019 в 01:17
поделиться

Да, можно использовать изолированное ключевое слово в реализации класса B Рендеринга:

class B : A
{
    public sealed override void Render()
    {
        // Prepare the object for rendering
        SpecialRender();
        // Do some cleanup
    }

    protected virtual void SpecialRender()
    {
    }
}
3
ответ дан 1 December 2019 в 01:17
поделиться

попробуйте sealed

class B : A
{
  protected sealed override void SpecialRender()
  {
    // do stuff
  }
}

class C : B
  protected override void SpecialRender()
  {
    // not valid
  }
}

, Конечно, я думаю, что C может обойти его, будучи new.

1
ответ дан 1 December 2019 в 01:17
поделиться

В B сделайте

protected override sealed void Render() { ... }
1
ответ дан 1 December 2019 в 01:17
поделиться

да. Если Вы отмечаете метод как Изолированный затем, он не может быть переопределен в производном классе.

0
ответ дан 1 December 2019 в 01:17
поделиться

Другой (лучше?) путем является probablby использование нового ключевого слова, чтобы препятствовать тому, чтобы конкретный виртуальный метод был overiden:

class A
{
    public virtual void Render()
    {
    }
}
class B : A
{
    public override void Render()
    {
        // Prepare the object for rendering       
        SpecialRender();
        // Do some cleanup    
    }
    protected virtual void SpecialRender()
    {
    }
}
class B2 : B
{
    public new void Render()
    {
    }
}
class C : B2
{
    protected override void SpecialRender()
    {
    }
    //public override void Render() // compiler error 
    //{
    //}
}
0
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: