Mục lục:
4. Khởi tạo, gán và gọi thuộc tính – phương thức
Như ta đã biết đối tượng là những sự vật, sự việc mà nó có những tính chất, hành động giống nhau, vậy thì lớp (class) có thể được ví như là một mẩu mô tả trạng thái, hành động của đối tượng đó. Có nhiều người hiểu nhầm lớp chính là đối tượng,
Cú pháp:
|
Ví dụ: Khai báo lớp sinh viên (lớp này đại diện cho đối tượng sinh viên)
|
Thuộc tính của lớp chính là thuộc tính của đối tượng mà lớp đó mô tả, ví dụ đối tượng động vật có những thuộc tính như: mắt, mũi, tai, chân thì những thứ đó cũng chính là thuộc tính của lớp động vật.
Cú Pháp:
|
Trong đó var $tenthuoctinh
chính là cách khai báo thuộc tính cho lớp.
Ví dụ: Đối tượng động vật có các thuộc tính như mắt, mũi, tai, chân, hãy khai báo lớp động vật và các thuộc tính của lớp đó.
|
Phương thức của lớp chính là phương thức của đối tượng, đó là những hành động (hành vi) của đối tượng. Ví dụ đối tượng động vật có các hành động như ăn, sủa, chạy …
Các phương thức nó rất giống với hàm nên nó cũng có các tính chất như hàm đó chỉ khác là phương thức nằm trong một lớp đối tượng và muốn gọi đến nó thì phải thông qua lớp đối tượng này. Từ nay đễ cho dễ tôi sẽ gọi các phược thức là hàm nhé.
Cú pháp:
|
Trong đó tenPhuongThuc chính là tên phương thức mình muốn tạo.
Ví dụ: Đối tượng động vật có các thuộc tính như mắt, mũi, tai, chân, và các hành động như ăn, sủa, chạy hãy khai báo lớp động vật và các thuộc tính, phương thức của lớp đó.
|
Bạn phải phân biệt được 2 từ khởi tạo đối tượng và khai báo đối tượng, khai báo đối tượng là ta tạo một lớp (class) của đối tượng đó, còn khởi tạo đối tượng là ta tạo một hình tượng của lớp mà ta đã khai báo. Vì lớp mô phỏng cho đối tượng nên sau này tôi sẽ dùng từ lớp thay cho đối tượng luôn.
Cú pháp: $ten_bien = new ClassName();
Ví Dụ:
|
Để truy xuất đến các thuộc tính của đối tượng ta dùng toán tử (->) để trỏ đến.
Cú pháp: $classname->method
Ví dụ:
|
Cũng tương tự như truy xuất đến các thuộc tính của đối tượng, ta dùng toán tử (->) để gọi các hàm trong đối tượng.
Cú pháp: $classname->function();
Ví dụ:
|
Các bạn thấy đó nó cũng giống như cách gọi hàm bình thường thôi đúng không nào?
Hàm trong đối tượng gọi đến các thuộc tính của chính mình bằng cú pháp sau: $this->ten_thuoc_tinh;
Ví dụ:
|
Nếu bạn đã từng học qua lập trình hướng đối tượng một ngôn ngữ bất kỳ khác như C++, Java thì abstract khá quen thuộc, và trong php đây cũng là một tính chất của lập trình hướng đối tượng nhưng nó không được xếp vào tính chất quan trọng, tính chất này giống như tính kế thừa theo tầm nhìn bề ngoài. Lớp Abstract sẽ định nghĩa các hàm (phương thức) mà từ đó các lớp con sẽ kế thừa nó và Overwrite lại (tính đa hình). Tất cả các phương thức của lớp abstract đều phải được khai báo là abstract và phải ở mức protected và public, không được ở mức private. Lớp Abstract có thể có thuộc tính nhưng thuộc tính không được khai báo là abstract, và bạn không thể khởi tạo một biến của lớp Abstract được.
Để khai báo một lớp Abstract ta dùng cú pháp sau:
|
Trong lớp Abstract các phương thức bạn khai báo ở dạng Abstract đều phải tuân theo cú pháp trên, tức là bạn không được định nghĩa thêm dòng lệnh nào bên trong nó. Như ví dụ dưới này là sai.
|
Như tôi nói ở trên bạn không thể tạo một biến đối tượng mới của lớp Abstract, như ví dụ dưới này là sai:
|
Mức truy cập các hàm của Abstract phải ở public hoặc protected để lớp kế thừa có thể định nghĩa lại và các thuộc tính của lớp Abstract không được khai báo Abstract. Các bạn xem ví dụ dưới đây:
|
Lớp kế thừa từ lớp Abstracth phải Rewrite lại tất cả các hàm Abstract trong lớp Abstract, nếu không sẽ bị báo sai. Ví dụ:
|
Lớp Final là lớp được khai báo là lớp cuối cùng, không một lớp nào có thể kế thừa nó. Tương tự như hàm Final trong Abstract hoặc trong kế thừa chỉ để gọi sử dụng, không được viết lại (Override). Để dễ hình dung các bạn xem ví dụ sau đây và thông qua phần ghi chú tôi đã giải thích.
Ví dụ lớp final:
|
Ví dụ hàm final:
|
Về bài trước... |
Bài tiếp theo... |
+ Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!
* Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!
* Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!
+ -:
+ -: