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
- C#-Klasse und -Objekt
- C# Teilklasse und Teilmethode
- Versiegelte C#-Klasse und -Methode
- C++-Klassen und -Objekte
- C++ Friend-Funktion und Friend-Klassen
- Java-Klasse und -Objekte
- Abstrakte Java-Klasse und abstrakte Methoden
- Java verschachtelte und innere Klasse
- C# Abstract Class Tutorial mit Beispiel:Was ist Abstraktion?
- Java - Objekt und Klassen