Lớp trừu tượng và giao diện
Ôn tập lại bài cũ
• Lớp và đối tượng
• Constructor và Destructor
• Garbage Collector
• Phương thức(Method)
• Chồng phương thức(Method Overloading)
• Chông toán tử(Operator Overloading)
• Access modifier (phạm vi truy xuất)
• Từ khóa ref và out
Nội dung trình bày
• Phương thức trừu tượng
• Lớp cơ sở trừu tượng(Abstract base class)
• Interface(giao diện)
• Multiple Interface
• Explicit Interface
• Interface Inheritance
• Tại sao lại dùng interface
• So sánh abstract base class và Interface
Subject name / Session# / 3 of Totalpage
Lớp trừu tượng và giao diện
Phương thức trừu tượng
• Là phương thức mà không có phần cài đặt(chỉ có phần khai báo
nguyên mẫu mà không có phần thân)
• Cú pháp để khai báo: đặt từ kháo abstract trước phần khai báo
phương thức(không viết thân phương thức)
• Ví dụ:
// chú ý là không có phần thân phương thức
public abstract void someMethod();
Lớp trừu tượng và giao diện
Lớp trừu tượng
• Lớp trừu tượng là lớp gồm 1 hoặc nhiều phương thức trừu tượng
• Không thể khởi tạo đối tượng cho lớp trừu tượng
// Ví dụ câu lệnh sau sẽ có lỗi
MyAbstractClass a1 = new MyAbstractClass();
• Một lớp khác sẽ cài đặt các phương thức trong lớp trừu tượng
• Ví dụ DEMO lớp trừu tượng
Lớp trừu tượng và giao diện
Khi nào thì sử dụng phương thức trừu tượng và lớp trừu tượng?
• Khi hai hoặc nhiều lớp muốn cài đặt các phương thức cùng tên
nhưng mỗi phương thức trong một lớp lại thực hiện các công việc
khác nhau(tính đa hình).
−
Các lớp này sẽ kế thừa và cài đặt các phương thức trong lớp
cơ sở
• Trong lập trình hướng đối tượng, lớp trừu tượng thường được đặt
ở mức đỉnh trong sơ đồ cây phân cấp các lớp kề thừa
Lớp trừu tượng và giao diện
Interface là gì?
• Là lớp trừu tượng hoàn toàn có nghĩa là chỉ chứa các abstract
method
• Không thể khởi tạo đối tượng cho Interface
• Một interface có thể nằm trong một namspace, nằm trong một
class(nếu nằm trong class thì phải đặt là public)
• Trong interface chỉ gồm các thành phần:
−
Abstract method
−
Properties
−
Indexers
−
Event
Lớp trừu tượng và giao diện
• Cú pháp khai báo:
interface IFile
{
int delFile();
void disFile();
}
• Chú ý nếu interface đặt trong một lớp thì phải đặt từ khóa public
trước interface
Lớp trừu tượng và giao diện
Cài đặt interface
• Interface được cài đặt bởi lớp
• Một lời cài đặt interface thì phải cài đặt tất cả các phương thức
trong lớp đó
• Cú pháp:
• Ví dụ DEMO
Lớp trừu tượng và giao diện
Multiple Interface
• Ngôn ngữ C# cho phép một lớp cài đặt nhiều Interface
Explicit Interface
• Khi 1 lớp mà cài đặt interface có 2 phương thức giống nhau thì phải
chỉ ra tên interface chưa phương thức cần cài đặt.
Interface Inherintace: Một interface có thể kế thừa nhiều
Interface
• Ví dụ DEMO về Multiple interface và Explicit Interface
Lớp trừu tượng và giao diện
Tại sao lại dùng interface
• Có được các lớp không có quan hệ với nhau cùng cài đặt các
phương thức giống nhau
• Sử dụng đa kế thừa
• Che dấu thông tin(encapsulation)
Lớp trừu tượng và giao diện
So sánh Abstract base class và Interface
• Tất cả các phương thức trong interface là abstract method, trong
khi đó phương thức trong abstract base class là abstract method
• Trong lớp Abstract base class có thể chứa các fields, constructor,
destructor, trong khi đó interface thì không
• Không thể tạo đối tượng(Instantiating object) của Abstract class và
Interface
Lớp trừu tượng và giao diện
Tổng kết
• Phương thức trừu tượng
• Lớp cơ sở trừu tượng(Abstract base class)
• Interface(giao diện)
• Multiple Interface
• Explicit Interface
• Interface Inheritance
• Tại sao lại dùng interface
• So sánh abstract base class và Interface