ABSTRACT CLASS LÀ GÌ

     

Abstract class và Interface là hai có mang 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 và interface không đơn giản như những ngôn từ khác. Cùng tò mò trong nội dung bài viết sau nhé.

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

Abstract class là gì?

Abstract class là 1 trong những class không tồn tại thông tin về nội dung tiến hành và đề xuất cái subclass (class con) buộc phải định nghĩa những phương thức ở lớp abstract. 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 che đi các tiến trình setup ở phía sau. Ví dụ như với lớp string, chúng ta chỉ việc gọi cách làm toUpperCase() để biến hóa chuỗi hay thành chuỗi in hoa cơ mà không cần để ý đến phương thức kia được cài đặt như nào. Abstract class giúp họ đạt được tính đa hình thời điểm Runtime, tức là cùng một class có thể cho ra nhiều đổi mới thể mà biến đổi thể đó không hẳn được có mang ở lớp abstract cơ mà được khái niệm ở lớp bé của nó. Việc call hàm đối tượng của lớp dẫn xuất thông qua con trỏ của lớp cơ sở (lớp abstract) đang được quyết định lúc Runtime. Các bạn cần đọc được nhiều hình trong Compile cùng đa hình trong Runtime ở nội dung bài viết này nhé.

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

*

Kết quả sau khi chạy chương trình.

*

Giải thích:

Trong C++ họ không gồm từ khóa abstract nhằm compiler hiểu rằng đấy là một lớp abstract mà họ phải khai báo một hàm ảo vào lớp đó để lớp con (lớp kế thừa) ghi đè(overriding) lại cách tiến hành đó. Ở code phía 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 con Lenovo ghi đè lại phương thức mã sản phẩm ở lớp Computer. Vào hàm main họ khai báo nhỏ trỏ của lớp Computer trỏ vào vùng nhớ của lớp bé và call hàm model thì từ bây giờ hàm mã sản phẩm được ghi đè sống lớp con được gọi. Tương tự con trỏ của lớp abstract trỏ vào vùng ghi nhớ 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 đè. 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 bao gồm ra kết quả như bên dưới không nhé.

*

Interface là gì?

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

Xem thêm: Bộ Nhớ Đệm Là Gì, Cache Là Gì, Tìm Hiểu Về Bộ Nhớ Cache? Có Nên Xóa Không

virtual () = 0;

Ví dụ:

*

Ở trên đây 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 đấy là một interface, đây là một chuẩn coding trong C++) gồm một thủ tục thuần ảo là phương thức tinnhDienTich(). Xem xét chỉ tất cả hàm được khắc ghi với từ bỏ khóa virtualthì mới được gán bằng 0. Chúng ta có thể hiểu hàm tinnhDienTich()có thể dùng để tính diện tích cho hình chữ nhật, hình tròn, hình vuông,... Như vậy nếu bọn họ tạo một class Rectangle thừa kế class IShape và quan niệm lại cách thức tinnhDienTich()để tính diện tích s hình chữ nhật thì đang thu được nhiều hình trong Runtime giống như như abstract class.

*

Có thể phát âm Interface là một bạn dạng mô tả hành vi hoặc kĩ năng của một class mà không đưa ra biện pháp thực hiện cụ thể của class đó như thế nào.

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

*

Tới đây dĩ nhiên sẽ có khá nhiều bạn thắc mắc abstract class khác cầm cố quái làm sao interface. New đầu khi tiếp cận với hai có mang 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. Mang sử chúng ta có một tấm abstract Xecó thuộc tính hộp động cơ và cách làm khởi động và tắt máy. Xe cộ máy, xe pháo ô tô, xe tải,... đều có chung phương thức và thuộc tính của lớp Xe.Vậy rất có thể hiểu abstract class như là một phiên bản thiết kế bình thường cho tất cả các class, nó thay mặt đại diện cho mối quan hệ "IS-A"(Ô sơn là Xe).

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

Xem thêm: Điều Hòa Panasonic 1 Chiều Inverter Pu18Ukh, Điều Hòa Panasonic 18000Btu

Lời kết

Qua bài viết này tôi đang hướng dẫn chúng ta cách cài đặt abstract class và interface trong C++ cũng như biết lúc nào nên áp dụng chúng. Mặc dù cách thiết đặt có khác so với những ngôn ngữ bậc cao sau đây như Java hay C# tuy nhiên về thực chất thì vẫn không thế đổi.