intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

ABSTRACT VÀ INTERFACE KHÁC NHAU

Chia sẻ: HA KIEN | Ngày: | Loại File: PDF | Số trang:3

152
lượt xem
20
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cả Abstract class và Interface đều là các lớp định nghĩa sẵn các method để các lớp khác kế thừa. Abstract class : các method có thể chỉ khai báo hoặc có thể định nghĩa method đó – quy định cách thực thi của method để các method lớp dẫn xuất sẽ mặc định thực thi như vậy

Chủ đề:
Lưu

Nội dung Text: ABSTRACT VÀ INTERFACE KHÁC NHAU

  1. C# Cơ B n WWW.CSHARPVN.COM ABSTRACT VÀ 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 và 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, và 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 và nó s ñư c overriden l i trong các l p con k th a. Và 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 và 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. Và 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 và 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 và 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 và 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; Biên t p Ngu n: Vubka
  2. C# Cơ B n WWW.CSHARPVN.COM } 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 và non- abstract, và đư 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() { Biên t p Ngu n: Vubka
  3. C# Cơ B n WWW.CSHARPVN.COM 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; } } Biên t p Ngu n: Vubka
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2