Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C# verzegelde klasse en methode

C# verzegelde klasse en methode

In deze tutorial leren we over de verzegelde klasse en methode in C# met behulp van voorbeelden.

Verzegelde klasse

Als we in C# niet willen dat een klasse wordt overgenomen door een andere klasse, kunnen we de klasse declareren als een verzegelde klasse .

Een verzegelde klasse kan geen afgeleide klasse hebben. We gebruiken de sealed trefwoord om een ​​verzegelde klasse te maken. Bijvoorbeeld,

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

In het bovenstaande voorbeeld hebben we een verzegelde klasse gemaakt Animal . Hier proberen we Hond . af te leiden klasse van het Dier klasse.

Aangezien een verzegelde klasse niet kan worden overgenomen, genereert het programma de volgende fout:

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

Verzegelde methode

Als we tijdens het overschrijven van een methode niet willen dat een overschreven methode verder wordt overschreven door een andere klasse, kunnen we deze declareren als een verzegelde methode .

We gebruiken een sealed trefwoord met een overschreven methode om een ​​verzegelde methode te creëren. Bijvoorbeeld,

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

In het bovenstaande voorbeeld hebben we de makeSound() . overschreven methode binnen de Hond klasse.

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

Merk op dat we de sealed . hebben gebruikt trefwoord met makeSound() . Dit betekent dat de Puppy klasse die de Hond . erft class mag makeSound() niet overschrijven .

Daarom krijgen we een foutmelding

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

wanneer we proberen de makeSound() . verder te overschrijven methode binnen de Puppy klas.

Opmerking :Het verzegelen van een overschreven methode voorkomt dat de methode wordt overschreven bij overerving op meerdere niveaus.


Waarom Sealed Class?

1. We gebruiken verzegelde klassen om overerving te voorkomen. Omdat we niet kunnen erven van een verzegelde klasse, kunnen de methoden in de verzegelde klasse niet worden gemanipuleerd van andere klassen.

Het helpt beveiligingsproblemen te voorkomen. Bijvoorbeeld,

sealed class A { 
  ...
}

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

Als klasse A kan niet worden geërfd, klasse B kan de methoden van klasse A niet overschrijven en manipuleren .

2. Een van de beste toepassingen van verzegelde klassen is wanneer je een klas hebt met statische leden.

De pennen klasse van de System.Drawing namespace is een van de voorbeelden van de verzegelde klasse. De pennen klasse heeft statische leden die de pennen met standaardkleuren vertegenwoordigen. Pens.Blue staat voor een pen met blauwe kleur.


C Taal

  1. C# klasse en object
  2. C# abstracte klasse en methode
  3. C# Gedeeltelijke klasse en gedeeltelijke methode
  4. C++ klassen en objecten
  5. C++ vriend Functie en vriend Klassen
  6. Java - Object en klassen
  7. C# - Overerving
  8. C# - Polymorfisme
  9. ASTM A729 Klasse A dubbel genormaliseerd en gehard
  10. ASTM A649 Klasse 2 genormaliseerd en gehard
  11. ASTM A288 klasse 4 gedoofd en getemperd