Abstract class với Interface là hai định nghĩa cơ phiên bản trong lập trình phía đối tượng, tuy nhiên trong C++ thì câu hỏi phân biệt abstract class cùng interface không đơn giản như những ngữ điệu khác. Cùng tìm hiểu trong bài viết sau nhé.

Bạn đang xem: Cách dùng interface trong c#

Abstract class là gì?

Abstract class là một trong class không có thông tin về nội dung triển khai và cần cái subclass (class con) nên định nghĩa những phương thức ở lớp abstract. Cùng với lớp abstract, bạn cũng có thể công khai mặt tiền của object mà lại vẫn che đi các tiến trình thiết lập ở phía sau. Ví dụ như với lớp string, chúng ta chỉ việc gọi thủ tục toUpperCase() để trở nên chuỗi thường thành chuỗi in hoa mà không cần xem xét phương thức kia được setup như nào. Abstract class giúp bọn họ đạt được xem đa hình thời gian Runtime, tức là cùng một class rất có thể cho ra nhiều phát triển thành thể mà vươn lên là thể đó chưa phải được quan niệm ở lớp abstract cơ mà được quan niệm ở lớp con của nó. Câu hỏi call hàm đối tượng của lớp dẫn xuất trải qua con trỏ của lớp cửa hàng (lớp abstract) đang được đưa ra quyết định lúc Runtime. Chúng ta cần hiểu được nhiều hình vào Compile và đa hình trong Runtime ở bài viết này nhé.

Ví dụ về việc thiết đặt và thực hiện một lớp abstract vào C++.

*

Kết quả sau khoản thời gian chạy chương trình.

*

Giải thích:

Trong C++ bọn họ không tất cả từ khóa abstract để compiler gọi rằng đấy là một lớp abstract mà chúng ta phải khai báo một hàm ảo vào lớp đó nhằm lớp nhỏ (lớp kế thừa) ghi đè(overriding) lại cách thức đó. Ở code phía bên trên class Computer là 1 lớp abstract được khai báo cùng với hàm ảo(virtual function) là hàm Model. Ở lớp nhỏ Lenovo ghi đè lại phương thức model ở lớp Computer. Trong hàm main bọn họ khai báo con trỏ của lớp Computer trỏ vào vùng ghi nhớ của lớp nhỏ và gọi hàm mã sản phẩm thì từ bây giờ hàm mã sản phẩm được ghi đè sống lớp bé được gọi. Giống như con trỏ của lớp abstract trỏ vào vùng lưu giữ của lớp Dell và điện thoại tư vấn hàm model ra thì hàm mã sản phẩm của lớp Dell sẽ tiến hành ghi đè. Nếu không khai báo hàm model ở lớp Computer là hàm ảo thì trình biên dịch sẽ hotline hàm model tại lớp cơ sở. Demo xem tất cả ra tác dụng như dưới không nhé.

*

Interface là gì?

Trong C++ câu hỏi khai báo một interface bao gồm nghĩa là bọn họ khai báo cùng với class với hàm thuần ảo với một cách tiến hành hủy ảo (virtual destructor). Tới đây chúng ta tìm hiểu một chút ít về hàm thuần ảo vào C++ nhé. Hàm thuần ảo được khai báo cùng với cú pháp như sau.

Xem thêm: Cách Dùng Amino Acid B5 : Dưỡng Ẩm Sâu Và Phục Hồi Da Hiệu Quả

virtual () = 0;

Ví dụ:

*

Ở đây tôi khai báo lớp IShape (khai báo class cùng với chữ "I" trước thương hiệu class để đánh dấu cho người đọc code biết rằng đây là một interface, đấy là một chuẩn chỉnh coding vào C++) gồm một thủ tục thuần ảo là cách tiến hành tinnhDienTich(). Xem xét chỉ bao gồm hàm được khắc ghi với từ khóa virtualthì new được gán bằng 0. Chúng ta có thể hiểu hàm tinnhDienTich()có thể dùng để làm tính diện tích s cho hình chữ nhật, hình tròn, hình vuông,... Do vậy nếu họ tạo một class Rectangle kế thừa class IShape và có mang lại cách làm tinnhDienTich()để tính diện tích hình chữ nhật thì sẽ thu được nhiều hình vào Runtime giống như như abstract class.

*

Có thể gọi Interface là một bản mô tả hành động hoặc năng lực của một class mà không chuyển ra giải pháp thực hiện ví dụ của class đó như vậy nào.

Vậy khi nào dùng abstract class, lúc nào dùng interface?

*

Tới đây chắc hẳn sẽ có nhiều bạn vướng mắc abstract class khác thế quái nào interface. Mới đầu khi tiếp cận với hai quan niệm này tôi cũng như chúng ta không biết lúc nào dùng abstract class bao giờ dùng interface. Mang sử bọn họ có một lớp abstract Xecó nằm trong tính hộp động cơ và thủ tục khởi rượu cồn và tắt máy. Xe máy, xe ô tô, xe cộ tải,... đều có chung cách tiến hành và trực thuộc tính của lớp Xe.Vậy có thể hiểu abstract class như là một bạn dạng thiết kế phổ biến cho toàn bộ các class, nó đại diện thay mặt cho quan hệ "IS-A"(Ô đánh là Xe).

Interface y như một bạn dạng hợp đồng vậy, bất kỳ lớp như thế nào triên khai một interface kia thì phải đồng ý với bản thiết kế mà lại interface đó chuyển ra. Lấy ví dụ như xe bus có thể chở khách còn xe pháo tải tất cả hàng. Việc chở khách giỏi chở hàng là một trong những phương thức không bắt buộc so với lớp xe buộc phải ta chế tạo ra interface ChoKhach với ChoHang để lớp XeBus với XeTai rất có thể implement nó. Vậy chúng ta cần interface khi bọn họ cần cung ứng các phương thức bổ sung cho một class mà các phương thức này không bắt buộc đối với class đó, nó đại diện thay mặt cho mối quan hệ "LIKE-A"(Xe bus có thể chở khách).

Lời kết

Qua nội dung bài viết này tôi vẫn hướng dẫn các bạn cách cài đặt abstract class và interface vào C++ cũng như biết lúc nào nên áp dụng chúng. Tuy cách setup có khác so với các ngôn ngữ bậc cao sau đây như Java tuyệt C# cơ mà về thực chất thì vẫn không nuốm đổi.