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# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken

Sealed Classes en Methods in C# Begrijpen

Deze gids legt uit hoe u het sealed keyword gebruikt om inheritance en methode overriding te beperken in C#, met praktische codevoorbeelden.

Sealed Class

In C# voorkomt het sealed keyword dat een klasse geërfd wordt. Een sealed klasse kan nooit een derived type hebben.

Voorbeeld:

using System;
namespace SealedClass {
    sealed class Animal { }
    // Poging om een sealed klasse te erven resulteert in compileerfout
    class Dog : Animal { }
    class Program {
        static void Main (string [] args) {
            // object van Dog klasse aanmaken
            Dog d1 = new Dog();
            Console.ReadLine();
        }
    }
}

De compiler emiteert:

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

Sealed Methode

Wanneer u een virtual methode overridet, wilt u misschien voorkomen dat derived klassen verder overriden. Prefix de override declaratie met sealed om dit te bereiken.

Voorbeeld:

using System;
namespace SealedClass {
    class Animal {
        public virtual void MakeSound() {
            Console.WriteLine("Dier Geluid");
        }
    }
    class Dog : Animal {
        // Sealed override
        sealed public override void MakeSound() {
            Console.WriteLine("Hond Geluid");
        }
    }
    class Puppy : Dog {
        // Poging om een sealed methode te overriden veroorzaakt compileerfout
        public override void MakeSound() {
            Console.WriteLine("Puppy Geluid");
        }
    }
    class Program {
        static void Main (string [] args) {
            // object van Puppy klasse aanmaken
            Puppy d1 = new Puppy();
            Console.ReadLine();
        }
    }
}

Resulterende fout:

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

Tip: Een overridden methode sealen stopt verder overriden in een multilevel inheritance keten.


Waarom Sealed Classes Gebruiken?

  1. Veiligheid en Integriteit – Een sealed klasse kan niet uitgebreid worden, dus het gedrag blijft voorspelbaar en kan niet gewijzigd worden door subklassen.
  2. Prestaties – De runtime kan sealed types agressiever optimaliseren omdat het weet dat er geen subklassen zijn.
  3. Statische Utility Types – Veel libraries blootleggen static leden via sealed klassen (bijv. Pens in System.Drawing).

Bijvoorbeeld, de Pens klasse levert pre-geconfigureerde Pen instanties voor standaard kleuren:

Pen bluePen = Pens.Blue; // vertegenwoordigt een blauwe pen

Omdat Pens sealed is, kunnen de static leden niet geoverriden of gewijzigd worden door andere types.

C Taal

  1. ASTM A729 Klasse A: Dubbel-Genormaliseerd & Aangelaten Staal – Belangrijkste Eigenschappen & Standaarden
  2. ASTM A649 Klasse 2 Genormaliseerd & Aangelaten Staal – Specificaties & Eigenschappen
  3. ASTM A288 Klasse 4 Afkool & Aangelaten Staal – Specificaties & Eigenschappen
  4. C# Classes & Objects: Fundamenten voor Robuuste OOP
  5. C# Abstract Classes & Methods: Een Praktische Gids
  6. C# Partial Classes en Methods: Een Praktische Gids
  7. C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
  8. C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
  9. C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen
  10. C# Polymorfisme: Statische vs Dynamische Binding Uitgelegd
  11. Java Onder de Knie: Objects, Classes en Kern OOP Concepten