1. Trang chủ
  2. » Giáo án - Bài giảng

ABSTRACT VÀ INTERFACE KHÁC NHAU?

3 207 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

WWW.CSHARPVN.COM C# Cơ Bản Biên tập Nguồn: Vubka ABSTRACT INTERFACE KHÁC NHAU? ðối với lập trình C# hay lập trình hướng ñối tượng nói chung, vấn ñề kế thừa sẽ ñem lại nhiều phiền toái nếu bạn chưa nắm rõ về vấn ñề này. Vậy thì sự khác biệt giữa lớp abstract interface ở chỗ nào? Ở ñây, mình xin ñược phép nói qua về chúng. Thì một lớp trừu tượng thì không có thể hiện nghĩa là ta không thể khởi tạo nó bằng toán tử new, một phương thức trong nó là abstract thì chỉ ñược ñưa ra ñịnh nghĩa (khai báo) mà không ñược thực thi nó sẽ ñược overriden lại trong các lớp con kế thừa. trong lớp mà tồn tại phương thức abstract thì lớp ñó cũng ñược ñịnh nghĩa abstract. ðối với giao diện thì khác hoàn toàn với lớp trừu tượng, nó ñịnh nghĩa một cách cứng nhắc các phương thức thuộc tính trong chúng nghĩa là không cho phép ta thực thi bất kỳ một ñoạn mã nào. tất cả các thành viên trong nó ñều ñược ñịnh nghĩa công khai (public). Một cách tổng quan về giao diện: Giao diện là ràng buộc, giao ước ñảm bảo cho các lớp hay các cấu trúc sẽ thực hiện một ñiều gì ñó. Khi một lớp thực thi một giao diện, thì lớp này báo cho các thành phần client biết rằng lớp này có hỗ trợ các phương thức, thuộc tính, sự kiện các chỉ mục khai báo trong giao diện. Một số lưu ý khi sử dụng abstract hay interface 1. Một class chỉ có thể kế thừa từ một abstract class, nhưng có thể kế thừa nhiều interface. 2. Trong Interface chỉ có thể khai báo các fields, methods, mà không ñược hiện thực nó. Còn ñối với abstract thì dùng các biến, hiện thực cách methods. 3. Các fields, methods trong interace ñều là public bắt buộc các class kế thừa phải cài ñặt nó (abstract). Trong abstract class thì có các fields, methods có thể là private, internal, public, protected có thể là abstract hoặc non-abstract. 4. Interface dùng ñể gom các hành ñộng cần ñược hiện thực , các khả năng của một ñối tượng, còn abstract class cho các lớp thừa kế cùng 1 loại, tính chất hay trạng thái. 5. Abstract class có tốc ñộ thực thi nhanh hơn interface. 6. Thêm 1 tính năng mới vào interface sẽ phá vỡ toàn bộ các lớp hiện thực, còn abstract thì không. Ví dụ về interface, các thành viên của interface phải ñược thực thi trong các lớp mà kế thừa từ nó public interface IPlayer { string Name { get; set; } Player Actor { get; set; WWW.CSHARPVN.COM C# Cơ Bản Biên tập Nguồn: Vubka } Bitmap Image { get; set; } } Ví dụ dưới đây khai báo một lớp abstract có các thành viên trong nó là abstract non- abstract, được thực thi trong lớp con là Faculty abstract class Employee { protected string m_str_department; protected double m_db_salary; protected int m_i_dateHired; public string M_Str_Department { get { return m_str_department; } set { m_str_department = value; } } public double M_DB_Salary { get { return m_db_salary; } set { m_db_salary = value; } } public int M_I_DateHired { get { return m_i_dateHired; } set { m_i_dateHired = value; } } public override string ToString() { return "Employee: " + m_str_name + "\nEmail: " + m_str_email; } public abstract double CalculateBonus(); public abstract int CalculateVacation(); } class Faculty : Employee { string m_str_rank; double m_db_hours; public override double CalculateBonus() { WWW.CSHARPVN.COM C# Cơ Bản Biên tập Nguồn: Vubka return 1000 + 0.05 * m_db_salary; } public override int CalculateVacation() { if (m_i_dateHired > 3) { if (m_str_rank == "Senior Lecture") return 6; return 5; } if (m_str_rank == "Senior Lecture") return 5; return 4; } }

Ngày đăng: 28/04/2014, 15:34

Xem thêm: ABSTRACT VÀ INTERFACE KHÁC NHAU?

TỪ KHÓA LIÊN QUAN

w