- Nếu có nhiều catch thì kiểm tra ngoại lệ từ khối đầu xuống
- Family là dù cho không có ngoại lệ cũng chạy
- Khối catch tổng quát hơn bao giờ cũng phải đặt sau lớp chuyên biệt hơn
Lập trình hướng đối tượng OOP ( Object - Oriented Programming)
Thứ Năm, 27 tháng 8, 2015
Ngoại lệ
Khối try/catch:
Thành viên lớp và thành viên thực thể
Biến của lớp:
- Biến thực thể không có từ khóa static
- Biến lớp được khai báo với từ khóa static
- Từ bên ngoài lớp, có thể dùng tên lớp để truy cập biến static
Phương thức của lớp:
- Phương thức của lớp(phương thức static) nó có thể tồn tại độc lập với các đối tượng và lớp có thể gọi trực tiếp đến nó mà không cần tham chiếu đến đối tượng nào.
Thành viên lớp thuộc về lớp và độc lập với các thực thể của lớp đó. Trong khi đó, thành viên thực thể gắn bó chặt chẽ với từng thực thể cụ thể
Khởi tạo biến lớp:
- Các biến lớp (static) được khởi tạo trước khi bất cứ đối tượng nào của lớp đó khởi tạo
- Các biến static trong một lớp khởi tạo trước khi các hàm static được chạy
Thành viên bất biến - final:
- Biến final là biến không thể sửa giá trị
- Một phương thức final là phương thức mà lớp con không thể cài đè
- Một lớp final là lớp không thể có lớp con
Hàm khởi tạo và vấn đề thừa kế
Gọi hàm khởi tạo của lớp cha... cha... cha... :
- Khi khởi tạo lớp con, hàm khởi tạo của lớp cha cũng được chạy dù không gọi hàm super(). Nghĩa là khi vừa tạo lớp con thì lớp cha cũng được tạo, chạy trước khi làm công việc trong hàm của lớp con.
- Khi truyền tham số vào hàm của lớp con tức là đưa giá trị cho biến thực thể ở lớp cha nắm giữ và sử dụng
- Lớp con không thừa kế hàm khởi tạo của lớp cha
- Ngoại trừ dùng super() để truyền tham số cho hàm khởi tạo của lớp cha, thì ta có thể truyền bằng cách dùng this("thamso")
Chú ý: Nếu hàm khởi tạo của lớp con có danh sách tham số giống lớp cha thì phải gọi hàm super() hoặc this()
Thứ Ba, 25 tháng 8, 2015
Các mức truy nhập
- Mức private: Chỉ sử dụng trong một lớp
- Mức public: Bất cứ ở đâu cũng có thể truy nhập đến các thức public
- Mức protected: Chỉ các lớp thừa kế của lớp đó mới được dùng, kể cả khi các con không nằm trong một gói.
NHỮNG ĐIỂM QUAN TRỌNG
- Lớp con chuyên biệt hóa lớp cha của nó
- Lớp con thừa kế các biến thực thể, các phương thức của cha nếu là public còn private thì không được
- Có thể cài đè phương thức được thừa kế nhưng không cài đè các biến thực thể của lớp cha
- Dùng thử quan niệm IS-A để kiểm tra cấu trúc thừa kế có hợp lý hay không, quan hệ chỉ một chiều. VD: Con sói nào cũng là động vật, nhưng không phải động vật nào cũng là con sói
- Khi cài đè phương thức lớp cha thì khi gọi, sẽ gọi phương thức ở lớp con. Nghĩa là gọi cái thấp nhất
- Để gọi phương thức của cha thì gọi hàm super()
Cài đè và nạp chồng
Cài đè:
- Khi gọi super() thì phương thức được cài đè sẽ chạy
- Các nguyên tắc khi cài đè:
- Danh sách tham số phải trùng nhau, kiểu giá trị trả về phải tương thích
- Không được giảm quyền truy cập so với lớp cha
Nạp chồng đơn giản là tạo ra nhiều hàm có trùng tên nhưng khác tham số.
Đa hình
- Theo nghĩa tổng quát đa hình là việc tồn tại ở nhiều hình thức
- Có thể tham chiếu đến lớp con của đối tượng
- Đa hình còn thể hiện ở việc truyền tham số, nghĩa là cùng một phương thức nhưng ta truyền các tham số khác nhau thì nó cho ra kết quả khác nhau.
Khi nào nên dùng quan hệ thừa kế
- Nên dùng khi một lớp là một loại cụ thể của lớp cha
- Nên dùng khi có mã tổng quát được dùng chung cho nhiều lớp
- Không nên dùng vì mục đích tái sử dụng mã, có nghĩa là dù nó không liên quan nhau nhưng vẫn thừa kế
- Không nên dùng khi lớp cha không qua được thử nghiệm IS-A. VD: Xe đạp là một phương tiện giao thông
LỢI ÍCH CỦA VIỆC THỪA KẾ
- Tránh mã trùng lập
- Dễ quản lý các hành vi của lớp cha
Đăng ký:
Bài đăng (Atom)