Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah perbezaan antara fungsi maya dan fungsi abstrak dalam C#?

Apakah perbezaan antara fungsi maya dan fungsi abstrak dalam C#?

WBOY
WBOYke hadapan
2023-08-29 10:37:05766semak imbas

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

Kaedah abstrak tidak menyediakan pelaksanaan, mereka memaksa kelas terbitan untuk mengatasi kaedah tersebut. Ia diisytiharkan di bawah kelas abstrak. Kaedah abstrak hanya mempunyai definisi kaedah

Kaedah maya mempunyai pelaksanaan, tidak seperti kaedah abstrak, ia boleh wujud dalam kedua-dua kelas abstrak dan bukan abstrak. Ia memberikan kelas terbitan pilihan untuk mengatasinya.

Fungsi Maya

Kata kunci maya berguna apabila mengubah suai kaedah, sifat, pengindeks atau acara. Anda boleh menggunakan fungsi maya apabila anda telah menentukan fungsi dalam kelas dan ingin melaksanakan fungsi itu dalam kelas yang diwarisi. Fungsi maya boleh mempunyai pelaksanaan yang berbeza dalam kelas warisan yang berbeza, dan panggilan ke fungsi ini akan ditentukan pada masa jalan.

Berikut ialah fungsi maya -

public virtual int area() { }

Contoh berikut menunjukkan cara menggunakan fungsi maya -

Contoh

Demonstrasi langsung

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();
      }
   }
}

Output

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

Fungsi abstrak#kata kunci yang digunakan adalah abstrak dalam C kelas dan fungsi abstraksi. Kelas abstrak dalam C# termasuk kaedah abstrak dan kaedah bukan abstrak.

Berikut ialah contoh fungsi abstrak dalam kelas abstrak dalam C# -

Contoh

Demo Langsung

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();
   }
}

Output

Bus
Car
Motorcycle

Atas ialah kandungan terperinci Apakah perbezaan antara fungsi maya dan fungsi abstrak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam