Abstract Class vs Interface
- progtips4devs
- Feb 24, 2017
- 2 min read
Trong lập trình hướng đối tượng không thể không nhắc tới Lớp trừu tượng (Abstract class) và Interface. Sau đây là các câu hỏi tìm hiểu về hai khái niệm này.

Câu hỏi: Lớp trừu tượng (Abstract class) là gì?
Trả lời: lớp trừu tượng là lớp mà ta không thể tạo ra bất kì đối tượng nào của nó.
Câu hỏi: Trong C++, làm sao để viết một lớp trừu tượng?
Trả lời: Lớp có ít nhất một phương thức thuần ảo là lớp trừa tượng. Phương thức thuần ảo là chỉ có khai báo mà không có cài đặt, ta khai báo như sau: virtual void Function() = 0;
Câu hỏi: Trong Java, làm sao để tạo một lớp trừu tượng?
Trả lời: - Dùng từ khóa abstract để khai báo lớp: public abstract class ClassA {} - Dùng từ khóa abstract để khai báo phương thức: public abstract void DoSomething();
Câu hỏi: Trong C#, làm sao để tạo một lớp trừu tượng?
Trả lời: Dùng từ khóa abstract: abstract class ClassName {}
Câu hỏi: Interface là gì?
Trả lời: Có thể xem interface như một mặt nạ của các lớp có cùng phương thức hoạt động nhưng khác bản chất.
Câu hỏi: Phân biệt giữa Abstract Class và Interface.
Trả lời: - Abstract class có thể chứa phương thức được cài đặt, còn interface không được có. - Abstract class có thể sử dụng access modifier, còn interface được mặc định là public abstract. - Lớp con phải định nghĩa lại các phương thức trừu tượng (không được cài đặt) của abstract còn các phương thức được cài không cần cài lại. Interface phải cài lại toàn bộ. - Trong Java hay C#, chỉ được kế thừa từ một abstract class và được implements nhiều interface - Abstract class có thể kế thừa từ abstract class và implements nhiều interface khác. Interface chỉ được implements nhiều interface.
Câu hỏi: Trong Java và C#, làm sao để khai báo interface?
Trả lời: Java và C# đều dùng từ khóa interface để khai báo: public interface ClassName {}
Comentarios