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

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

WBOY
Lepaskan: 2023-08-29 10:37:05
ke hadapan
790 orang telah melayarinya

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() { }
Salin selepas log masuk

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();
      }
   }
}
Salin selepas log masuk

Output

Rectangle class area
Area: 70
Triangle class area:
Area: 25
Salin selepas log masuk

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();
   }
}
Salin selepas log masuk

Output

Bus
Car
Motorcycle
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan