ABSTRACT CLASS LÀ GÌ

Abstract class và Interface là nhì quan niệm cơ bản vào thiết kế hướng đối tượng, tuy nhiên trong C++ thì Việc riêng biệt abstract class với interface ko đơn giản dễ dàng tựa như các ngữ điệu khác. Cùng khám phá vào bài viết sau nhé.

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

Abstract class là gì?

Abstract class là 1 trong class không có thông báo về câu chữ triển khai và yêu cầu cái subclass (class con) buộc phải định nghĩa các thủ tục ngơi nghỉ lớp abstract. Với lớp abstract, bạn có thể công khai khía cạnh tài chính object tuy vậy vẫn giấu đi những tiến trình setup ngơi nghỉ phía sau. lấy ví dụ như với lớp string, chúng ta chỉ việc Call cách làm toUpperCase() nhằm vươn lên là chuỗi thường xuyên thành chuỗi in hoa cơ mà ko phải quan tâm đến cách làm đó được setup nlỗi nào. Abstract class góp chúng ta đã có được tính nhiều hình thời điểm Runtime, tức là và một class có thể cho ra những trở nên thể mà trở thành thể kia không phải được khái niệm làm việc lớp abstract mà lại được quan niệm ở lớp bé của chính nó. Việc hotline hàm đối tượng người sử dụng của lớp dẫn xuất thông qua bé trỏ của lớp đại lý (lớp abstract) sẽ được ra quyết định lúc Runtime. Các bạn phải gọi được nhiều hình trong Compile và nhiều hình trong Runtime ngơi nghỉ bài viết này nhé.

lấy ví dụ về vấn đề thiết lập với sử dụng một tờ abstract trong C++.

*

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

*

Giải thích:

Trong C++ bọn họ không có từ khóa abstract nhằm compiler hiểu rõ rằng đấy là một tấm abstract nhưng mà họ đề nghị knhị báo một hàm ảo vào lớp kia để lớp bé (lớp kế thừa) ghi đè(overriding) lại cách tiến hành đó. Ở code phía bên trên class Computer là một lớp abstract được knhị báo với hàm ảo(virtual function) là hàm Model. Ở lớp bé Lenovo ghi đtrằn lại cách thức Model sinh sống lớp Computer. Trong hàm main chúng ta knhì báo con trỏ của lớp Computer trỏ vào vùng ghi nhớ của lớp con và Điện thoại tư vấn hàm Model thì hôm nay hàm Model được ghi đnai lưng làm việc lớp bé được điện thoại tư vấn. Tương từ bỏ con trỏ của lớp abstract trỏ vào vùng lưu giữ của lớp Dell cùng Đ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ếu không khai báo hàm Model ngơi nghỉ lớp Computer là hàm ảo thì trình biên dịch đã gọi hàm Model trên lớp cửa hàng. Thử coi tất cả ra hiệu quả như dưới ko nhé.

*

Interface là gì?

Trong C++ câu hỏi knhị báo một interface Tức là họ knhị báo với class cùng 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 vào C++ nhé. Hàm thuần ảo được knhị báo cùng với cú pháp như sau.

Xem thêm: Nằm Mơ Giặt Quần Áo - Nằm Mơ Thấy Giặt Quần Áo Đánh Con Gì

virtual () = 0;

Ví dụ:

*

Tại đây tôi knhì báo lớp IShape (knhì báo class với chữ "I" trước tên class nhằm khắc ghi cho người gọi code hiểu được đó là một interface, đó là một chuẩn chỉnh coding vào C++) gồm một cách tiến hành thuần ảo là cách làm tinnhDienTich(). Lưu ý chỉ bao gồm hàm được lưu lại cùng với từ bỏ khóa virtualthì mới có thể được gán bởi 0. Chúng ta có thể hiểu hàm tinnhDienTich()có thể dùng để làm tính diện tích S mang đến hình chữ nhật, hình tròn trụ, hình vuông vắn,... bởi vậy nếu như họ tạo một class Rectangle thừa kế class IShape cùng tư tưởng lại cách tiến hành tinnhDienTich()để tính diện tích hình chữ nhật thì đang chiếm được đa hình trong Runtime tựa như nlỗi abstract class.

*

cũng có thể đọc Interface là 1 trong những bản miêu tả hành vi hoặc kĩ năng của một class cơ mà không đưa ra cách tiến hành ví dụ của class đó thế nào.

Vậy lúc nào cần sử dụng abstract class, bao giờ sử dụng interface?

*

Tới trên đây có thể sẽ có khá nhiều các bạn vướng mắc abstract class không giống nỗ lực quái làm sao interface. Mới đầu Lúc tiếp cận cùng với nhị định nghĩa này tôi cũng tương tự chúng ta lần khần khi nào cần sử dụng abstract class bao giờ sử dụng interface. Giả sử bọn họ có một lớp abstract Xecó ở trong tính động cơ và phương thức khởi hễ với tắt đồ vật. Xe thứ, xe ô tô, xe pháo cài,... đều phải có thông thường thủ tục với nằm trong tính của lớp Xe.Vậy hoàn toàn có thể đọc abstract class nhỏng là một trong phiên bản thiết kế chung cho toàn bộ các class, nó đại diện cho mối quan hệ "IS-A"(Ô sơn là Xe).

Interface giống hệt như một bạn dạng vừa lòng đồng vậy, bất kể lớp nào triên knhị một interface kia thì nên đồng ý cùng với phiên bản thiết kế mà lại interface kia giới thiệu. lấy một ví dụ xe bus rất có thể chlàm việc khách còn xe cộ download bao gồm hàng. Việc chở khách hàng tuyệt chsống mặt hàng là một cách thức ko yêu cầu so với lớp xe cộ yêu cầu ta sản xuất interface ChoKhach và ChoHang nhằm lớp XeBus cùng XeTai có thể implement nó. Vậy bọn họ nên interface khi họ cần hỗ trợ các thủ tục bổ sung cho một class cơ mà đều cách thức này sẽ không phải đối với class kia, nó đại diện thay mặt cho mối quan hệ "LIKE-A"(Xe bus có thể chsinh hoạt khách).

Lời kết

Qua bài viết này tôi đang trả lời các bạn phương pháp thiết đặt abstract class với interface trong C++ cũng giống như biết khi nào buộc phải sử dụng bọn chúng. Tuy cách thiết đặt có không giống so với các ngôn từ bậc cao về sau nhỏng Java giỏi C# mà lại về bản chất thì vẫn không biến đổi.