Bài 7

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

Subject name / Session# / 3 of Totalpage

• So sánh abstract base class và Interface

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

(cid:0) Các lớp này sẽ kế thừa và cài đặt các phương thức trong lớp

khác nhau(tính đa hình).

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)

(cid:0) Abstract method

(cid:0) Properties

• Trong interface chỉ gồm các thành phần:

(cid:0) Event

(cid:0) Indexers

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