Статичні та герметичні класи


150
  1. Чи є який-небудь клас, який реалізується в статичному класі? засоби:

    static class ABC : Anyclass
  2. Чи існує який-небудь клас, який може бути успадкований як в герметичному, так і в статичному класі?
    засоби:

    static class ABC : AClass {}

    І

    sealed class ABC : AClass {}

Чи можу я помилитися в якійсь мірі?


staticнасправді не має нічого спільногоsealed
ken2k

1
Але @ ken2k, статичні класи за замовчуванням запечатані в C #. Чи не так? статичні класи взагалі не беруть участь у спадщині.
RBT

Відповіді:


654

Це може допомогти вам:

+--------------+---+-------------------------+------------------+---------------------+
|  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
Дивовижно. Дякуємо за швидку відповідь @HosseinNarimaniRad. Я запросив вас вранці, оскільки інформація була все-таки правильною, але це була лише проблема форматування. До речі, ваша відповідь заслуговує на прийняту відповідь з моменту її опублікування, але, схоже, нам доведеться чекати більше на це :)
RBT

Сортувати цікаво думати про інші типи, виходячи з цього. Як і деякі, root classякі можуть бути успадкованими та інстанційними, але не можуть успадковувати. Не впевнений, чому це було б корисно, але все ж
AustinWBryan

static class Foo : object { }є дійсним, але по суті є static class Foo { }.
тематичне поле

39

Простими словами

Статичний клас

Клас можна оголосити статичним, вказуючи на те, що він містить лише статичних членів. Неможливо створити екземпляри статичного класу за допомогою нового ключового слова. Статичні класи завантажуються автоматично за допомогою загальної мови виконання (CLR) .NET Framework під час завантаження програми або простору імен, що містять клас.

Запечатаний клас

Запечатаний клас не можна використовувати як базовий клас. Запечатані класи в основному використовуються для запобігання похідності. Оскільки вони ніколи не можуть бути використані як базовий клас, деякі оптимізації часу роботи можуть зробити виклик членів класу, які закриваються, трохи швидше.


19

Ви можете дозволити sealedкласу успадковуватися від іншого класу, але ви не можете успадковувати від в sealedкласі:

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

staticКлас не може успадковувати від інших класів.


3

Ви можете просто їх диференціювати як:

       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

Проста відповідь - герметичний клас не може використовуватися як базовий клас .

Я намагаюся показати, що ти герметичний клас є похідним класом у наведеному нижче коді

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

а інша запечатана функція доступна лише з примірника з неї (ви не можете успадкувати її)

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

    }
}

1

Запечатані класи:

  1. Може створювати екземпляри, але не може успадкувати
  2. Може містити як статичні, так і нестатичні елементи.

Статичні класи:

  1. Не може ні створювати їх екземпляри, ні успадковувати їх
  2. Може мати лише статичні члени.

0

1 - Ні, ви не можете реалізувати статичний клас.

2 - Ні, ви не можете успадкувати статичний або герметичний клас


4
Можливо, ви можете додати трохи пояснень щодо цього.
абдул
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.