Virtual Destructor Trong C++ — Modern C++

Tìm phát âm với tiến hành tính nhiều hình trong C#, knhì báo cách làm ảo, hấp thụ ông chồng override cách làm, tạo nên những lớp trừu tượng abstract cùng khai báo Interface


Tính nhiều hình C#

Tính đa hình là một trong những trong số công dụng của lập trình sẵn phía đối tượng người dùng, vào phần vượt download cách thức - nó vẫn trình bày tính đa hình. Tính đa hình của nghĩa là có không ít dạng, tính nhiều hình sẽ bộc lộ rõ lúc kiến tạo các lớp kế thừa. Một cách tiến hành được Gọi, nó vẫn là cách tiến hành rõ ràng làm sao tùy nằm trong vào đối tượng người tiêu dùng cơ hội nó xúc tiến.


Pmùi hương thức ảo (hàm ảo) C#

Một thủ tục ảo trong lớp - là phương thức hoàn toàn có thể quan niệm lại (bị hấp thụ chồng - bị đè) vị lớp thừa kế. Muốn nắn một thủ tục là ảo, thêm từ bỏ khóa virtual vào knhị báo thương hiệu hàm.

Bạn đang xem: Virtual Destructor Trong C++ — Modern C++

class Product protected double price = 0; // Phương thức ảo ProductInfo public virtual void ProductInfo() Console.WriteLine($"Giá sản phẩm price"); public void TestProduct() this.ProductInfo(); Vì thủ tục ProductInfo khai báo là loại phương thức virtual, nên ngơi nghỉ lớp kế thừa nó, có thể có mang lại - chuyên môn này Điện thoại tư vấn là hấp thụ chồng (override)

Nạp chồng phương thức

Ở lớp kế thừa, hoàn toàn có thể khái niệm lại cách thức ảo của lớp cơ sở, Việc này là thực hiện hấp thụ ông xã, nhằm hấp thụ ck chỉ việc khai báo lại phương thức tiếp tế từ khóa override

class Iphone : Product public Iphone() price = 500; public override void ProductInfo() Console.WriteLine($"Điện thoại Iphone"); base.ProductInfo(); Khi sử dụng:

Product p1 = new Product();Product p2 = new Iphone();p1.TestProduct(); // In ra: Giá sản phẩm 0p2.TestProduct(); // In ra: Điện thoại Iphone điện thoại tư vấn đến ProductInfo vẫn khái niệm lại Lớp Iphone đang tư tưởng lại cách làm ProductInfo, đề nghị những lời call đến ProductInfo là hoàn toàn không giống cùng với khái niệm lúc đầu của nó. Tuy nhiên, nếu muốn thi hành code của hàm cơ mà bởi lớp cơ sở quan niệm thì bạn phải Hotline cho nó trải qua ký hiệu base.

class Iphone : Product public Iphone() price = 500; public override void ProductInfo() Console.WriteLine($"Điện thoại Iphone"); base.ProductInfo(); // call lại hàm ở base Product p = new Iphone();p.TestProduct();// Điện thoại Iphone// Giá sản phẩm 500 Để nhìn thấy rõ hơn về tính đa hình, viết lại 2 đoạn code nhỏng sau:

Product p = new Product();p.TestProduct();Product p = new Iphone();p.TestProduct();Đều gọi cách tiến hành TestProduct() của lớp cơ sở, nhưng này lại thực hiện phần đông tác vụ khác nhau.

Lớp trừu tượng / Pmùi hương thức trừu tượng

Lớp trừu tượng cũng là 1 trong những ngôi trường hòa hợp miêu tả tính đa hình của thiết kế OOP, Khi knhị báo một tờ bao gồm trường đoản cú khóa abstract thì nó là lớp trừu tượng. Đã là lớp trừu tượng thì nó không được dùng để khởi tạo nên đối tượng người dùng trực tiếp cơ mà nó chỉ làm cho lớp các đại lý thừa kế bởi vì lớp khác.

Xem thêm: Điểm Mạnh Của Bạn Là Gì - Ứng Phó Với Câu Hỏi Điểm Yếu Của Bạn Là Gì

Trong lớp trừu tượng, còn rất có thể khai báo cách thức trừu tượng với từ bỏ khóa abstract, phương thức này không tồn tại thân (chỉ có tên - tsi mê số), nó những hiểu biết lớp kế thừa cần phải nạp chồng (overrid)

abstract class Product protected double price = 0; public abstract void ProductInfo(); public void TestProduct() this.ProductInfo(); Định nghĩa nlỗi bên trên, Product là lớp trừu tượng, nó gồm một hàm trừu tượng là ProductInfo(), hàm này những hiểu biết lớp kế thừa yêu cầu overrid nó. Do Product là lớp trừu tượng, vì thế nó ko bao giờ được dùng để chế tạo đối tượng.

Product p = new Product(); // lỗi vì thực hiện abstract chế tạo đối tượng người dùng Product chỉ dùng làm kế thừa, hàm abstract cần phải overrid

class Iphone : Product public Iphone() price = 500; public override void ProductInfo() Console.WriteLine($"Điện thoại Iphone"); class Laptop : Product public Laptop() price = 1500; public override void ProductInfo() Console.WriteLine($"Máy Laptop ... "); Product p1 = new Iphone();Product p2 = new Laptop();p1.TestProduct(); // Điện thoại Iphonep2.TestProduct(); // Máy Laptop ...

Giao diện - Interface

Giao diện (interface) nó tất cả ý nghĩa sâu sắc tương tự cùng với lớp abstract. Chỉ gồm điều knhị báo thì cần sử dụng từ bỏ khóa interface vắt đến tự khóa class và điều quan trọng - toàn bộ các phương thức đa số knhị báo không có thân (chỉ mang tên - tức là cách làm abstract).. Lớp thực hiện đồ họa (lớp kế thừa) sẽ phải quan niệm lại (ko yêu cầu từ bỏ khóa overrid) toàn bộ các cách thức này, cũng có một điều khác là lớp thừa kế hoàn toàn có thể thừa kế nhiều giao diện.

interface IProduct public void ShowPrice(); interface IOrder public void OrderAction(int numberProduct);class Product : IProduct, IOrder double price; public Product(double price) this.price = price; public void ShowPrice() Console.WriteLine($"Price: price"); public void OrderAction(int numberProduct) Console.WriteLine($"Order: numberProduct"); Tại trên, Product đang tiến hành nhị giao diện (IProduct, IOrder)

Vậy hình ảnh, y hệt như những mẫu - nhưng mà lớp xúc tiến bắt buộc phải tất cả các cách làm như thể nó.

Leave a Reply

Your email address will not be published. Required fields are marked *