Share virtual vs abstract c#

thusuongleai

New member
#Virtual vs Tóm tắt C#
#lập trình C
#oop khái niệm
#Di sản
#polymorphism

## ảo và trừu tượng trong C#là gì?

Ảo và trừu tượng là hai từ khóa trong C# được sử dụng để xác định hành vi của một lớp hoặc phương thức.Các phương thức ảo cho phép một lớp dẫn xuất ghi đè lên việc thực hiện một phương thức trong lớp cơ sở, trong khi các phương thức trừu tượng phải được ghi đè bởi một lớp dẫn xuất.

### Phương pháp ảo

Phương thức ảo là một phương thức được khai báo trong một lớp cơ sở và có thể được ghi đè bởi một lớp dẫn xuất.Khi một lớp dẫn xuất ghi đè một phương thức ảo, việc triển khai phương thức của lớp dẫn xuất được gọi là thay vì triển khai của lớp cơ sở.

Ví dụ: mã sau đây hiển thị một lớp cơ sở gọi là `động vật` với một phương thức ảo gọi là` speak () `.

`` `C#
lớp công khai động vật {
công khai void void speak () {
Console.WriteLine ("Animal nói: Tôi không biết phải nói gì!");
}
}
`` `

Mã sau đây cho thấy một lớp có nguồn gốc gọi là `Dog` ghi đè phương thức` speak () `trong lớp` animal`.

`` `C#
Lớp học công cộng Dog: Animal {
công khai ghi đè void speak () {
Console.WriteLine ("Dog nói: WOOF!");
}
}
`` `

Bây giờ, khi chúng ta tạo một thể hiện của lớp 'Dog` và gọi phương thức `speak ()`, việc thực hiện phương thức của lớp chó' sẽ được gọi là.

`` `C#
Var Dog = New Dog ();
Dog.Speak ();

// Đầu ra: Dog nói: Woof!
`` `

### Phương pháp trừu tượng

Một phương pháp trừu tượng là một phương pháp được khai báo trong một lớp cơ sở nhưng không được thực hiện.Một phương pháp trừu tượng phải được ghi đè bởi một lớp dẫn xuất.

Ví dụ: mã sau đây hiển thị một lớp cơ sở gọi là `hình dạng 'với một phương thức trừu tượng gọi là` area () `.

`` `C#
Hình dạng lớp trừu tượng công khai {
khu vực kép trừu tượng công khai ();
}
`` `

Mã sau đây hiển thị một lớp dẫn xuất được gọi là `circle` ghi đè phương thức` `()` trong lớp `hình dạng '.

`` `C#
Vòng tròn lớp công khai: hình {
nhân đôi riêng _radius;

vòng tròn công khai (bán kính đôi) {
_radius = bán kính;
}

Ghi đè công khai Double Area () {
trả về toán học.pi * _radius * _radius;
}
}
`` `

Bây giờ, khi chúng ta tạo một thể hiện của lớp `circle` và gọi phương thức` `()`, việc triển khai phương thức của lớp Circle` sẽ được gọi.

`` `C#
Var Circle = New Circle (10);
vòng tròn.area ();

// Đầu ra: 314.1592653589793
`` `

### Khi nào nên sử dụng các phương thức ảo và trừu tượng

Các phương thức ảo nên được sử dụng khi bạn muốn cho phép một lớp dẫn xuất để ghi đè lên việc thực hiện một phương thức.Điều này rất hữu ích khi bạn có một lớp cơ sở xác định hành vi chung của một loại, nhưng bạn muốn cho phép các lớp dẫn xuất tùy chỉnh hành vi cho các kịch bản cụ thể.

Các phương thức trừu tượng nên được sử dụng khi bạn muốn xác định một phương thức phải được thực hiện bởi một lớp dẫn xuất.Điều này rất hữu ích khi bạn có một lớp cơ sở xác định giao diện cho một loại, nhưng bạn không muốn thực hiện phương thức trong lớp cơ sở vì nó sẽ thay đổi tùy thuộc vào việc triển khai cụ thể của lớp dẫn xuất.

## Bản tóm tắt

Các phương thức ảo và trừu tượng là hai khái niệm quan trọng trong C# cho phép bạn xác định hành vi của một lớp hoặc phương thức.Các phương thức ảo cho phép một lớp dẫn xuất ghi đè lên việc thực hiện một phương thức trong lớp cơ sở, trong khi các phương thức trừu tượng phải được ghi đè bởi một lớp dẫn xuất.

## Tài nguyên

* [C# Phương thức ảo và trừu tượng] (C# Programming Guide - C# classes-and-structs/virtual-and-abstract-members)
* [C# Lớp trừu tượng] (C# Programming Guide - C#
=======================================
#Virtual vs Abstract C#
#C# Programming
#oop Concepts
#Inheritance
#polymorphism

## What is Virtual and Abstract in C#?

Virtual and abstract are two keywords in C# that are used to define the behavior of a class or method. Virtual methods allow a derived class to override the implementation of a method in the base class, while abstract methods must be overridden by a derived class.

### Virtual Methods

A virtual method is a method that is declared in a base class and can be overridden by a derived class. When a derived class overrides a virtual method, the derived class's implementation of the method is called instead of the base class's implementation.

For example, the following code shows a base class called `Animal` with a virtual method called `Speak()`.

```c#
public class Animal {
public virtual void Speak() {
Console.WriteLine("Animal says: I don't know what to say!");
}
}
```

The following code shows a derived class called `Dog` that overrides the `Speak()` method in the `Animal` class.

```c#
public class Dog : Animal {
public override void Speak() {
Console.WriteLine("Dog says: Woof!");
}
}
```

Now, when we create an instance of the `Dog` class and call the `Speak()` method, the `Dog` class's implementation of the method will be called.

```c#
var dog = new Dog();
dog.Speak();

// Output: Dog says: Woof!
```

### Abstract Methods

An abstract method is a method that is declared in a base class but is not implemented. An abstract method must be overridden by a derived class.

For example, the following code shows a base class called `Shape` with an abstract method called `Area()`.

```c#
public abstract class Shape {
public abstract double Area();
}
```

The following code shows a derived class called `Circle` that overrides the `Area()` method in the `Shape` class.

```c#
public class Circle : Shape {
private double _radius;

public Circle(double radius) {
_radius = radius;
}

public override double Area() {
return Math.PI * _radius * _radius;
}
}
```

Now, when we create an instance of the `Circle` class and call the `Area()` method, the `Circle` class's implementation of the method will be called.

```c#
var circle = new Circle(10);
circle.Area();

// Output: 314.1592653589793
```

### When to Use Virtual and Abstract Methods

Virtual methods should be used when you want to allow a derived class to override the implementation of a method. This is useful when you have a base class that defines the general behavior of a type, but you want to allow derived classes to customize the behavior for specific scenarios.

Abstract methods should be used when you want to define a method that must be implemented by a derived class. This is useful when you have a base class that defines the interface for a type, but you don't want to implement the method in the base class because it will vary depending on the specific implementation of the derived class.

## Summary

Virtual and abstract methods are two important concepts in C# that allow you to define the behavior of a class or method. Virtual methods allow a derived class to override the implementation of a method in the base class, while abstract methods must be overridden by a derived class.

## Resources

* [C# Virtual and Abstract Methods](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/virtual-and-abstract-members)
* [C# Abstract Classes](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top