Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Запечатанный класс и метод С#

Запечатанный класс и метод C#

В этом руководстве мы узнаем о закрытом классе и методе в C# с помощью примеров.

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

В C#, когда мы не хотим, чтобы класс наследовался другим классом, мы можем объявить класс как запечатанный класс. .

Запечатанный класс не может иметь производного класса. Мы используем sealed ключевое слово для создания закрытого класса. Например,

using System;
namespace SealedClass {
  sealed class Animal {
    
  }

  // trying to inherit sealed class
  // Error Code
  class Dog : Animal {
    
  }   

  class Program  {
    static void Main (string [] args) {

      // create an object of Dog class
      Dog d1 = new Dog();  
      Console.ReadLine();
    }
  }
}

В приведенном выше примере мы создали запечатанный класс Animal. . Здесь мы пытаемся вывести Dog класс из класса Animal класс.

Поскольку запечатанный класс не может быть унаследован, программа выдает следующую ошибку:

error CS0509: 'Dog': cannot derive from sealed type 'Animal'
<час>

Закрытый метод

Во время переопределения метода, если мы не хотим, чтобы переопределенный метод был переопределен другим классом, мы можем объявить его как запечатанный метод. .

Мы используем sealed ключевое слово с переопределенным методом для создания запечатанного метода. Например,

using System;
namespace SealedClass {

  class Animal {
    public virtual void makeSound() {
    Console.WriteLine("Animal Sound");
    }
  }

  class Dog : Animal {

    // sealed method
    sealed public override void makeSound() {

      Console.WriteLine("Dog Sound");
    }
  }

  class Puppy : Dog {

    // trying to override sealed method
    public override void makeSound() {
      Console.WriteLine("Puppy Sound");
    }
  }   

  class Program  {
    static void Main (string [] args) {
      
      // create an object of Puppy class
      Puppy d1 = new Puppy();  
      Console.ReadLine();
    }
  }
}

В приведенном выше примере мы переопределили функцию makeSound(). метод внутри Dog класс.

// Inside the Dog class
sealed public override void makeSound() {
  Console.WriteLine("Dog Sound");
}

Обратите внимание, что мы использовали sealed ключевое слово с makeSound() . Это означает, что Щенок класс, который наследует Dog классу не разрешено переопределять makeSound() .

Следовательно, мы получаем ошибку

error CS0239: 'Puppy.makeSound()': cannot override inherited member 'Dog.makeSound()' because it is sealed

когда мы пытаемся дополнительно переопределить makeSound() метод внутри Puppy учебный класс.

Примечание :запечатывание переопределенного метода предотвращает переопределение метода при многоуровневом наследовании.

<час>

Почему Sealed Class?

1. Мы используем закрытые классы для предотвращения наследования. Поскольку мы не можем наследовать от запечатанного класса, методами в запечатанном классе нельзя управлять из других классов.

Это помогает предотвратить проблемы с безопасностью. Например,

sealed class A { 
  ...
}

// error code
class B : A {
  ...
}

Как класс A нельзя наследовать, класс B не может переопределять и манипулировать методами класса A .

2. Одно из лучших применений запечатанных классов — когда у вас есть класс со статическими членами.

Ручки класс System.Drawing namespace — один из примеров запечатанного класса. Ручки класс имеет статические члены, которые представляют перья стандартных цветов. Pens.Blue представляет собой перо синего цвета.


Язык C

  1. Класс и объект С#
  2. Абстрактный класс и метод С#
  3. Частичный класс C# и частичный метод
  4. Классы и объекты С++
  5. Дружественные функции C++ и дружественные классы
  6. Java — объект и классы
  7. С# — Наследование
  8. С# — полиморфизм
  9. ASTM A729, класс A, двойная нормализованная и закаленная
  10. ASTM A649, класс 2, нормализованная и закаленная