Abstract Class Là Gì

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

Bạn đang xem: Abstract class là gì

Abstract class là gì?

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

Ví dụ về việc thiết lập và sử dụng một lớp abstract vào C++.

*

Kết quả sau thời điểm chạy chương trình.

*

Giải thích:

Trong C++ họ không tất cả từ khóa abstract nhằm compiler gọi rằng đó là một lớp abstract mà bọn họ phải khai báo một hàm ảo trong lớp đó để lớp con (lớp kế thừa) ghi đè(overriding) lại thủ tục đó. Ở code phía bên trên class Computer là 1 trong những lớp abstract được khai báo với hàm ảo(virtual function) là hàm Model. Ở lớp bé Lenovo ghi đè lại phương thức model ở lớp Computer. Vào hàm main họ khai báo con trỏ của lớp Computer trỏ vào vùng lưu giữ của lớp bé và điện thoại tư vấn hàm model thì bây giờ hàm model được ghi đè nghỉ ngơi lớp nhỏ được gọi. Tựa 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 model của lớp Dell sẽ tiến hành ghi đè. Còn nếu như 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ở. Test xem có ra công dụng như bên dưới không nhé.

*

Interface là gì?

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

virtual () = 0;

Ví dụ:

*

Ở phía trên tôi khai báo lớp IShape (khai báo class cùng với chữ "I" trước tên class để đánh dấu cho những người đọc code biết rằng đó là một interface, đấy là một chuẩn chỉnh coding vào C++) gồm một cách làm thuần ảo là phương thức tinnhDienTich(). để ý chỉ bao gồm hàm được khắc ghi với từ khóa virtualthì mới được gán bởi 0. Bạn 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à khái niệm lại cách làm tinnhDienTich()để tính diện tích s hình chữ nhật thì vẫn thu được nhiều hình vào Runtime giống như như abstract class.

*

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

Vậy khi nào dùng abstract class, bao giờ dùng interface?

*

Tới đây có thể sẽ có tương đối nhiều bạn vướng mắc abstract class khác nỗ lực quái như thế nào interface. New đầu lúc tiếp cận với hai định nghĩa này tôi cũng như các bạn không biết lúc nào dùng abstract class lúc nào dùng interface. đưa sử chúng ta có một tờ abstract Xecó nằm trong tính hộp động cơ và cách làm khởi hễ và tắt máy. Xe cộ máy, xe cộ ô tô, xe cộ tải,... đều có chung cách làm và thuộc tính của lớp Xe.Vậy có thể hiểu abstract class như là một phiên bản thiết kế tầm thường cho toàn bộ các class, nó thay mặt cho quan hệ "IS-A"(Ô sơn là Xe).

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

Xem thêm: Sự Thật Về Wwe - Tất Tần Thông Tin Về Wwe Bạn Đọc Nên Nắm Được

Lời kết

Qua nội dung bài viết này tôi đang hướng dẫn các bạn cách setup abstract class cùng interface vào C++ cũng giống như biết khi nào nên thực hiện chúng. Tuy cách thiết đặt có khác so với những ngôn ngữ bậc cao sau này như Java tốt C# tuy nhiên về bản chất thì vẫn không gắng đổi.