Diferenças de classe estática e selada


150
  1. Existe alguma classe que seja implementada na classe estática? significa:

    static class ABC : Anyclass
  2. Existe alguma classe que possa ser herdada na classe selada e na classe estática?
    significa:

    static class ABC : AClass {}

    E

    sealed class ABC : AClass {}

Posso estar errado em alguma extensão?


statictem realmente nada a ver comsealed
ken2k

1
Mas @ ken2k, classes estáticas são seladas por padrão em C #. Não são? classes estáticas não participam de herança.
RBT

Respostas:


654

Isso pode ajudá-lo a:

+--------------+---+-------------------------+------------------+---------------------+
|  Class Type  |   | Can inherit from others | Can be inherited | Can be instantiated | 
|--------------|---|-------------------------+------------------+---------------------+
| normal       | : |          YES            |        YES       |         YES         |
| abstract     | : |          YES            |        YES       |         NO          |
| sealed       | : |          YES            |        NO        |         YES         |
| static       | : |          NO             |        NO        |         NO          |
+--------------+---+-------------------------+------------------+---------------------+

1
Impressionante. Obrigado pela pronta resposta @HosseinNarimaniRad. Eu votei em você de manhã, pois as informações estavam corretas, mas era apenas uma questão de formatação. Aliás, a sua resposta merece ser a resposta aceita a partir do momento em que foi publicado, mas parece que vai ter que esperar mais para que :)
RBT

É interessante pensar em outros tipos, com base nisso. Como alguns root classque podem ser herdados e instanciados, mas não podem herdar. Não tenho certeza por que isso seria útil, mas ainda assim
AustinWBryan

static class Foo : object { }é válido, mas é essencialmente static class Foo { }.
themefield

39

Em palavras simples

Classe estática

Uma classe pode ser declarada estática, indicando que ela contém apenas membros estáticos. Não é possível criar instâncias de uma classe estática usando a nova palavra-chave. As classes estáticas são carregadas automaticamente pelo CLR (Common Language Runtime) do .NET Framework quando o programa ou espaço para nome que contém a classe é carregado.

Classe selada

Uma classe selada não pode ser usada como uma classe base. Classes seladas são usadas principalmente para evitar derivações. Como eles nunca podem ser usados ​​como classe base, algumas otimizações em tempo de execução podem tornar a chamada de membros selados da classe um pouco mais rápida.


19

Você pode deixar uma sealedclasse herdar de outra classe, mas não pode herdar de uma sealedclasse:

sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass     // won't compile

Uma staticclasse não pode herdar de outras classes.


3

Você pode simplesmente diferenciar os dois como:

       Sealed Class       |        Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be     | classes as well as cannot be
inherited                 | inherited

3

A resposta simples é que uma classe selada não pode ser usada como classe base .

Estou tentando mostrar que a classe selada é uma classe derivada no código abaixo

 public sealed class SealedClass : ClassBase
{
    public override void Print()
    {
        base.Print();
    }
}

e outro recurso selado só pode ser acessado com instância. (você não pode herdar dele)

 class Program
{
    static void Main(string[] args)
    {
        SealedClass objSeald = new SealedClass();
        objSeald.Name = "Blah blah balh";
        objSeald.Print();

    }
}

1

Classes seladas:

  1. Pode criar instâncias, mas não pode herdar
  2. Pode conter membros estáticos e não estáticos.

Classes estáticas:

  1. Não pode criar suas instâncias nem herdá-las
  2. Pode ter apenas membros estáticos.

0

1 - Não, você não pode implementar uma classe estática.

2 - Não, você não pode herdar de uma classe estática ou selada


4
Pode ser que você possa adicionar uma pequena explicação sobre isso.
abdul
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.