Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen virtuellen Funktionen und abstrakten Funktionen in C#?

Was ist der Unterschied zwischen virtuellen Funktionen und abstrakten Funktionen in C#?

WBOY
WBOYnach vorne
2023-08-29 10:37:05722Durchsuche

C# 中的虚函数和抽象函数有什么区别?

Abstrakte Methoden stellen keine Implementierung bereit, sie zwingen abgeleitete Klassen, die Methode zu überschreiben. Es wird unter der abstrakten Klasse deklariert. Abstrakte Methoden haben nur Methodendefinitionen. Virtuelle Methoden haben eine Implementierung. Im Gegensatz zu abstrakten Methoden können sie sowohl in abstrakten als auch in nicht abstrakten Klassen existieren. Es gibt abgeleiteten Klassen die Möglichkeit, es zu überschreiben.

Virtuelle Funktionen

Das virtuelle Schlüsselwort ist nützlich beim Ändern von Methoden, Eigenschaften, Indexern oder Ereignissen. Sie können virtuelle Funktionen verwenden, wenn Sie eine Funktion in einer Klasse definiert haben und diese Funktion in geerbten Klassen implementieren möchten. Virtuelle Funktionen können unterschiedliche Implementierungen in verschiedenen geerbten Klassen haben, und Aufrufe dieser Funktionen werden zur Laufzeit bestimmt.

Das Folgende ist eine virtuelle Funktion -

public virtual int area() { }

Das folgende Beispiel zeigt, wie eine virtuelle Funktion verwendet wird -

Beispiel

Live-Demonstration

using System;

namespace PolymorphismApplication {
   class Shape {
      protected int width, height;
      public Shape( int a = 0, int b = 0) {
         width = a;
         height = b;
      }
      public virtual int area() {
         Console.WriteLine("Parent class area :");
         return 0;
      }
   }
   class Rectangle: Shape {
      public Rectangle( int a = 0, int b = 0): base(a, b) {
      }
      public override int area () {
         Console.WriteLine("Rectangle class area ");
         return (width * height);
      }
   }
   class Triangle: Shape {
      public Triangle(int a = 0, int b = 0): base(a, b) {
      }
      public override int area() {
         Console.WriteLine("Triangle class area:");
         return (width * height / 2);
      }
   }
   class Caller {
      public void CallArea(Shape sh) {
         int a;
         a = sh.area();
         Console.WriteLine("Area: {0}", a);
      }
   }
   class Tester {
      static void Main(string[] args) {
         Caller c = new Caller();
         Rectangle r = new Rectangle(10, 7);
         Triangle t = new Triangle(10, 5);

         c.CallArea(r);
         c.CallArea(t);
         Console.ReadKey();
      }
   }
}

Ausgabe

Rectangle class area
Area: 70
Triangle class area:
Area: 25

Abstrakte Funktion

Das Schlüsselwort abstract in C# wird für abstrakt verwendet Klassen und Abstraktionen funktionieren. Abstrakte Klassen in C# umfassen abstrakte Methoden und nicht abstrakte Methoden.

Hier ist ein Beispiel einer abstrakten Funktion in einer abstrakten Klasse in C# –

Beispiel

Live-Demo

using System;
public abstract class Vehicle {
   public abstract void display();
}
public class Bus : Vehicle {
   public override void display() {
      Console.WriteLine("Bus");
   }
}
public class Car : Vehicle {
   public override void display() {
      Console.WriteLine("Car");
   }
}
public class Motorcycle : Vehicle {
   public override void display() {
      Console.WriteLine("Motorcycle");
   }
}
public class MyClass {
   public static void Main() {
      Vehicle v;
      v = new Bus();
      v.display();
      v = new Car();
      v.display();
         v = new Motorcycle();
      v.display();
   }
}

Ausgabe

Bus
Car
Motorcycle

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen virtuellen Funktionen und abstrakten Funktionen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen