Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Versiegelte C#-Klasse und -Methode

C#-versiegelte Klasse und Methode

In diesem Tutorial lernen wir die versiegelte Klasse und Methode in C# anhand von Beispielen kennen.

Sealed-Klasse

Wenn wir in C# nicht möchten, dass eine Klasse von einer anderen Klasse geerbt wird, können wir die Klasse als versiegelte Klasse deklarieren .

Eine versiegelte Klasse kann keine abgeleitete Klasse haben. Wir verwenden den sealed Schlüsselwort, um eine versiegelte Klasse zu erstellen. Zum Beispiel

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();
    }
  }
}

Im obigen Beispiel haben wir eine versiegelte Klasse Animal erstellt . Hier versuchen wir, Dog abzuleiten Klasse von Animal Klasse.

Da eine versiegelte Klasse nicht vererbt werden kann, generiert das Programm den folgenden Fehler:

error CS0509: 'Dog': cannot derive from sealed type 'Animal'

Versiegelte Methode

Wenn wir beim Überschreiben von Methoden nicht möchten, dass eine überschriebene Methode weiter von einer anderen Klasse überschrieben wird, können wir sie als versiegelte Methode deklarieren .

Wir verwenden einen sealed Schlüsselwort mit einer überschriebenen Methode, um eine versiegelte Methode zu erstellen. Zum Beispiel

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();
    }
  }
}

Im obigen Beispiel haben wir makeSound() überschrieben -Methode innerhalb von Dog Klasse.

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

Beachten Sie, dass wir den sealed verwendet haben Schlüsselwort mit makeSound() . Gemeint ist der Welpe Klasse, die den Hund erbt Klasse darf makeSound() nicht überschreiben .

Daher erhalten wir einen Fehler

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

wenn wir versuchen, makeSound() weiter zu überschreiben -Methode innerhalb des Puppy Klasse.

Hinweis :Das Versiegeln einer überschriebenen Methode verhindert das Überschreiben der Methode bei der mehrstufigen Vererbung.


Warum Sealed-Klasse?

1. Wir verwenden versiegelte Klassen, um Vererbung zu verhindern. Da wir nicht von einer versiegelten Klasse erben können, können die Methoden in der versiegelten Klasse nicht von anderen Klassen manipuliert werden.

Es hilft, Sicherheitsprobleme zu vermeiden. Zum Beispiel

sealed class A { 
  ...
}

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

Als Klasse A nicht vererbbar, Klasse B kann die Methoden der Klasse A nicht überschreiben und manipulieren .

2. Eine der besten Verwendungen von versiegelten Klassen ist, wenn Sie eine Klasse mit statischen Membern haben.

Die Stifte Klasse der System.Drawing Namespace ist eines der Beispiele für die versiegelte Klasse. Die Stifte Die Klasse hat statische Member, die die Stifte mit Standardfarben darstellen. Pens.Blue stellt einen Stift mit blauer Farbe dar.


C Sprache

  1. C#-Klasse und -Objekt
  2. Abstrakte C#-Klasse und -Methode
  3. C# Teilklasse und Teilmethode
  4. C++-Klassen und -Objekte
  5. C++ Friend-Funktion und Friend-Klassen
  6. Java - Objekt und Klassen
  7. C# - Vererbung
  8. C# - Polymorphismus
  9. ASTM A729 Klasse A doppelt normalisiert und angelassen
  10. ASTM A649 Klasse 2 normalisiert und angelassen