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

C# Kapselung (Encapsulation): Zugriffsmodifizierer & Datenschutz

Was ist Kapselung?

Kapselung (Encapsulation) bedeutet, Implementierungsdetails einer Klasse zu verbergen und nur eine kontrollierte Schnittstelle nach außen bereitzustellen. Sie ermöglicht die gewünschte Abstraktionsebene.

In C# wird Kapselung durch Zugriffsmodifizierer (Access Specifiers) realisiert.

Zugriffsmodifizierer in C#

ModifiziererSichtbarkeit
publicÜberall zugreifbar.
privateNur innerhalb der definierenden Klasse.
protectedInnerhalb der Klasse und abgeleiteter Klassen.
internalInnerhalb der gleichen Assembly (Projekt).
protected internalKombination: protected ODER internal (ab C# 7.2 auch private protected für UND).

public – Öffentlicher Zugriff

Member sind von überall erreichbar.

public class Rectangle
{
    public double Length;   // öffentlich
    public double Width;

    public double GetArea() => Length * Width;

    public void Display()
    {
        Console.WriteLine($"Length: {Length}, Width: {Width}, Area: {GetArea()}");
    }
}

// Nutzung
var r = new Rectangle();
r.Length = 4.5;   // direkter Zugriff
r.Width = 3.5;
r.Display();

private – Privater Zugriff

Member sind nur innerhalb der Klasse sichtbar. Zugriff erfolgt über öffentliche Methoden (Getter/Setter oder Properties).

public class Rectangle
{
    private double length;
    private double width;

    public void AcceptDetails()
    {
        Console.Write("Length: "); length = Convert.ToDouble(Console.ReadLine());
        Console.Write("Width: ");  width  = Convert.ToDouble(Console.ReadLine());
    }

    public double GetArea() => length * width;

    public void Display()
    {
        Console.WriteLine($"Length: {length}, Width: {width}, Area: {GetArea()}");
    }
}

// Nutzung
var r = new Rectangle();
r.AcceptDetails(); // setzt private Felder indirekt
r.Display();

protected – Für Vererbung

Ermöglicht abgeleiteten Klassen Zugriff auf Basisklassen-Member. Details im Kapitel Vererbung.

internal – Assembly-weit

Sichtbar für alle Typen innerhalb der gleichen Assembly (DLL/EXE). Standard für Klassen ohne Modifizierer.

internal class InternalClass { } // nur in diesem Projekt sichtbar

Hinweis: Fehlt bei einem Member der Modifizierer, ist der Default private.

protected internal – Kombiniert

Zugreifbar aus abgeleiteten Klassen oder Klassen derselben Assembly. Wird für Vererbungsszenarien über Assembly-Grenzen hinweg genutzt.

C Sprache

  1. C# Klassen & Objekte: Fundamente für robustes OOP
  2. C# Zugriffsmodifizierer verstehen: Public, Private, Protected, Internal und mehr
  3. C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
  4. C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
  5. C# Geschachtelte Klassen verstehen: Definition, Verwendung und Vererbung
  6. C# Partielle Klassen und Methoden verstehen
  7. Versiegelte Klassen und Methoden in C# meistern
  8. Java Encapsulation erklärt: Sichere Datenkapselung & Kontrolle
  9. Polymorphie in C++: Praktischer Leitfaden
  10. Datenabstraktion in C++: Interface-Implementierung-Trennung