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

Abstrakte C#-Klasse und -Methode

Abstrakte C#-Klasse und -Methode

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

Abstrakte Klasse

In C# können wir keine Objekte einer abstrakten Klasse erstellen. Wir verwenden den abstract Schlüsselwort zum Erstellen einer abstrakten Klasse. Zum Beispiel

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language();

Eine abstrakte Klasse kann sowohl abstrakte Methoden (Methode ohne Körper) als auch nicht-abstrakte Methoden (Methode mit Körper) haben. Zum Beispiel

abstract class Language {

  // abstract method
  public abstract void display1();

  // non-abstract method
  public void display2() {
    Console.WriteLine("Non abstract method");
  }
}

Bevor Sie fortfahren, sollten Sie sich mit der C#-Vererbung vertraut machen.


Abstrakte Klasse erben

Da wir keine Objekte einer abstrakten Klasse erstellen können, müssen wir daraus eine abgeleitete Klasse erstellen. Damit wir über das Objekt der abgeleiteten Klasse auf Mitglieder der abstrakten Klasse zugreifen können. Zum Beispiel

using System;
namespace AbstractClass {

  abstract class Language {

    // non-abstract method
    public void display() {
      Console.WriteLine("Non abstract method");
    }
  }

  // inheriting from abstract class
  class Program : Language {

    static void Main (string [] args) {
      
      // object of Program class
      Program obj = new Program();

      // access method of an abstract class
      obj.display();

      Console.ReadLine();
    }
  }
}

Ausgabe

Non abstract method

Im obigen Beispiel haben wir eine abstrakte Klasse namens Language erstellt . Die Klasse enthält eine nicht abstrakte Methode display() .

Wir haben das Programm erstellt Klasse, die die abstrakte Klasse erbt. Beachten Sie die Anweisung,

obj.display();

Hier, obj ist das Objekt der abgeleiteten Klasse Program . Wir rufen die Methode der abstrakten Klasse über das Objekt obj auf .

Hinweis :Wir können die abstrakte Klasse nur als Basisklasse verwenden. Aus diesem Grund können abstrakte Klassen nicht versiegelt werden. Weitere Informationen finden Sie unter Versiegelte Klasse und Methode von C#.


Abstrakte C#-Methode

Eine Methode ohne Hauptteil wird als abstrakte Methode bezeichnet. Wir verwenden den abstract Schlüsselwort zum Erstellen abstrakter Methoden. Zum Beispiel

public abstract void display();

Hier display() ist eine abstrakte Methode. Eine abstrakte Methode kann nur innerhalb einer abstrakten Klasse vorhanden sein.

Wenn eine nicht-abstrakte Klasse eine abstrakte Klasse erbt, sollte sie eine Implementierung der abstrakten Methoden bereitstellen.

Beispiel:Implementierung der abstrakten Methode

using System;
namespace AbstractClass {

  abstract class Animal {

    // abstract method
    public abstract void makeSound();
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override void makeSound() {

      Console.WriteLine("Bark Bark");

    }
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();
      obj.makeSound();    

      Console.ReadLine(); 
    }
  }
}

Ausgabe

Bark Bark 

Im obigen Beispiel haben wir eine abstrakte Klasse namens Animal erstellt . Wir haben eine abstrakte Methode makeSound() innerhalb der Klasse.

Wir haben einen Hund Klasse, die von Animal erbt Klasse. Hund Klasse stellt die Implementierung der abstrakten Methode makeSound() bereit .

// provide implementation of abstract method
public override void makeSound() {

  Console.WriteLine("Bark Bark");

}

Beachten Sie, dass wir override verwendet haben mit makeSound() Methode. Dies zeigt an, dass die Methode die Methode der Basisklasse überschreibt.

Wir haben dann das Objekt Dog verwendet Klasse für den Zugriff auf makeSound() .

Wenn der Hund Klasse hatte die Implementierung der abstrakten Methode makeSound() nicht bereitgestellt , Hund Klasse hätte auch als abstrakt markiert werden sollen.

Hinweis :Im Gegensatz zur C#-Vererbung können wir virtual nicht verwenden mit den abstrakten Methoden der Basisklasse. Das liegt daran, dass eine abstrakte Klasse implizit virtuell ist.


Abstrakte Klasse mit Get- und Set-Accessoren

Wir können Get- und Set-Accessoren als abstrakt markieren. Zum Beispiel

using System;
namespace AbstractClass {
  abstract class Animal {
    
    protected string name;
    // abstract method
    public abstract string Name {
      get;
      set;
    }
  }

  // inheriting from abstract class
  class Dog : Animal {

    // provide implementation of abstract method
    public override string Name {
      get {
        return name;
      }
      set {
        name = value; 
      }
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog obj = new Dog();  
      obj.Name = "Tom";
      Console.WriteLine("Name: " + obj.Name); 

      Console.ReadLine();
    }
  }
}

Ausgabe

Name: Tom

Im obigen Beispiel haben wir den get- und set-Accessor als abstract markiert.

obj.Name = "Tom";
Console.WriteLine("Name: " + obj.Name);

Wir setzen und erhalten den Wert von name Feld der abstrakten Klasse Animal mit dem Objekt der abgeleiteten Klasse Dog .


Zugriff auf den Konstruktor abstrakter Klassen

Eine abstrakte Klasse kann auch Konstruktoren haben. Zum Beispiel

using System;
namespace AbstractClass {
  abstract class Animal {
    
    public Animal() {
      Console.WriteLine("Animal Constructor");
    }
  }

  class Dog : Animal {
    public Dog() {
      Console.WriteLine("Dog Constructor");
    }   
  }

  class Program  {
    static void Main (string [] args) {
      // create an object of Dog class
      Dog d1 = new Dog();  

      Console.ReadLine();
    }
  }
}

Ausgabe

Animal Constructor
Dog Constructor

Im obigen Beispiel haben wir einen Konstruktor innerhalb der abstrakten Klasse Animal erstellt .

Dog d1 = new Dog();

Hier, wenn wir ein Objekt der abgeleiteten Klasse Dog erstellen der Konstruktor der abstrakten Klasse Animal wird auch angerufen.

Hinweis :Wir können auch Destruktoren innerhalb der abstrakten Klasse verwenden.


C#-Abstraktion

Die abstrakten Klassen werden verwendet, um in C# Abstraktion zu erreichen.

Abstraktion ist eines der wichtigsten Konzepte der objektorientierten Programmierung. Es ermöglicht uns, unnötige Details auszublenden und nur die benötigten Informationen anzuzeigen.

Dies hilft uns, die Komplexität zu bewältigen, indem wir Details mit einer einfacheren, übergeordneten Idee verbergen.

Ein praktisches Beispiel für Abstraktion können Motorradbremsen sein. Wir wissen, was eine Bremse tut. Wenn wir die Bremse betätigen, hält das Motorrad an. Die Funktionsweise der Bremse bleibt uns jedoch verborgen.

Der große Vorteil des Verbergens der Funktionsweise der Bremse besteht darin, dass der Hersteller jetzt Bremsen für verschiedene Motorräder unterschiedlich implementieren kann. Die Bremswirkung ist jedoch dieselbe.

Beispiel:C#-Abstraktion

using System;
namespace AbstractClass {
  abstract class MotorBike {
    
    public abstract void brake();
  }

  class SportsBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {
      Console.WriteLine("Sports Bike Brake");
    }
   
  }

  class MountainBike : MotorBike {

    // provide implementation of abstract method
    public override void brake() {      
      Console.WriteLine("Mountain Bike Brake");
    }
   
  }
  class Program  {
    static void Main (string [] args) {
      // create an object of SportsBike class
      SportsBike s1 = new SportsBike();  
      s1.brake();

      // create an object of MountainBike class
      MountainBike m1 = new MountainBike();
      m1.brake();

      Console.ReadLine();
    }
  }
}

Ausgabe

Sports Bike Brake
Mountain Bike Brake

Im obigen Beispiel haben wir eine abstrakte Klasse MotorBike erstellt . Es hat eine abstrakte Methode brake() .

Als Bremse() ist eine abstrakte Methode die Implementierung von brake() in Motorrad wird verborgen gehalten.

Jedes Motorrad hat eine andere Ausführung der Bremse. Deshalb SportsBike macht seine eigene Implementierung von brake() und MountainBike macht seine eigene Implementierung von brake() .

Hinweis :Wir verwenden Schnittstellen, um eine vollständige Abstraktion in C# zu erreichen. Weitere Informationen finden Sie unter C#-Schnittstelle.


C Sprache

  1. C#-Klasse und -Objekt
  2. C# Teilklasse und Teilmethode
  3. Versiegelte C#-Klasse und -Methode
  4. C++-Klassen und -Objekte
  5. C++ Friend-Funktion und Friend-Klassen
  6. Java-Klasse und -Objekte
  7. Abstrakte Java-Klasse und abstrakte Methoden
  8. Java verschachtelte und innere Klasse
  9. C# Abstract Class Tutorial mit Beispiel:Was ist Abstraktion?
  10. Java - Objekt und Klassen