Abtract Class:
Lớp trừu tượng (Abstract Class) là lớp dùng để định nghĩa những thuộc tính và hành vi chung của những lớp khác.. Hay nói cách khác: Lớp trừu tượng là lớp dùng để khai báo thuộc tính và phương thức cho các lớp khác sử dụng.
+ Đặc điểm:
- Lớp trừu tượng không cho phép khởi tạo tham số, chỉ khai báo mà thôi
- Lớp trừu tượng được dùng như một lớp cha (base class) của các lớp có cùng bản chất.( kiểu, loại, nhiệm vụ của class).
- Mỗi lớp dẫn xuất (derived class - lớp con) có thể thừa kế từ một lớp trừu tượng.
- Từ khóa abstract được dùng để định nghĩa một Lớp trừu tượng.
- Những lớp được định nghĩa bằng cách dùng từ khóa abstract thì không cho phép khởi tạo đối tượng (instance) của lớp ấy.
Interface:
Giao diện (Interface): là một chức năng mà ta có thể thêm vào bất kì class nào. Interface có thể bao gồm nhiều hàm/phương thức và tất cả chúng cùng phục vụ cho một chức năng.
Như vậy, Interface được dùng để mô tả một "bản thiết kế" cho một chức năng của class. Nếu muốn tạo một bản thiết kế, hãy sử dụng abstract class. Một bản thiết kế tất nhiên sẽ có những thứ đã được dựng sẵn và có những thứ là abstract.
So sánh giữa Abtract class vs Interface:
Giống:
Cả hai đều không thể khởi tạo đối tượng.
Cả hai đều khai báo các phương thức nhưng không thực hiện chúng.
Cả hai đều bao gồm các phương thức abstract.
Cả hai đều được thực thi từ các class kế thừa.
Cả hai đều có thể kế thừa từ nhiều interface.
Excersise:
Implement a class named Person and two sub classes of Person named Student and Employee. Make
Faculty and Staff sub classes of Employee. A Person has a name, phone number and email address.
A student has a program to which he/she enrolled ( Business, Computer Science...) . An Employee has a department, salary and the date hired. A faculty member has office hours and a rank. A staff member has a title. You are required to:
1. Override the ToString() to display the class name and the person's name and email address.
2. Provide properties in each class to read and write it's fields
3. Define a CalculateBonus and CalculateVacation as abstract methods in Employee class and
implement them in Faculty and Staff as follows
o Faculty get 1000 + 0.05 x Salary and Staff get 0.06 x Salary
o Faculty get 5 weeks if they are employed more than 3 years and additional one week if
he/she is "Senior Lecturer". Otherwise 4 weeks. Staff get 4 weeks for 5 year service.
Otherwise get 3 weeks