Bên trong phương thức Các từ khóa self và super

Một phần của tài liệu thực hành ngôn ngữ lập trình (Trang 81 - 83)

Khi viết một phương thức cho một lớp, ngòai các biến tạm được khai báo trong phương thức, lập trình viên có thể truy xuất đến các thuộc tính tương ứng được khai báo trong lớp của các phương thức này.

Ngòai ra, bên trong phương thức, lập trình viên có thể truy xuất đến đối tượng đang nhận thông điệp tương ứng và lớp cha của nó qua các từ khóa selfsuper.

self tương ứng với đối tượng đang nhận thông điệp.

Ví dụ xây dựng cho lớp Magnitude một phương thức returnme như sau (xem phần 3 để biết cách viết và biên dịch một phương thức mới):

returnme ^ self

Sau đó thử thực thi với các số nguyên, số thực và ký tự (vốn thuộc về các lớp được dẫn xuất của lớp Magnitude nên có thể sử dụng phương thức này), kết quả sẽ trả về chính giá trị của đối tượng nhận thông điệp

4 returnme Æ 4

4.2 returme Æ 4.200000 $2 returnme Æ $2

super tương ứng với lớp cha của đối tượng đang nhận thông điệp. Dùng từ khóa super khi ta muốn gọi một phương thức được xây dựng trên lớp cha nhưng đã bị lớp con (tức lớp của đối tượng đang nhận thông điệp) che phủ.

Ví dụ:

Vẫn với phương thức returnme cho lớp Magnitude như trên, ta sẽ thêm vào lớp Character một phương thức cũng mang tên returnme. Như vậy phương thức này sẽ che phủ phương thức returnme mà lớp Character được thừa hưởng từ lớp cha. Muốn vẫn sử dụng phương thức được thừa hưởng này, ta bắt buộc phải dùng đến từ khóa super

Nội dung phương thức returnme cho lớp Character như sau:

Bên trong phương thức viết cho lớp Character, có thể truy xuất đến thuộc tính asciiInteger của lớp này

^ super returnme asciiValue Khi thực thi script chính như sau main

$A returnme

Kết quả sẽ trả về 65 (mã ascii của đối tượng nhận thông điệp).

Giải thích: với câu lệnh super returnme, phương thức returnme được xây dựng cho lớp cha (Magnitude) sẽđược gọi, kết quả sẽ trả vềđối tượng nhận thông điệp (self) là $A, sau đó đối tượng $A nhận tiếp thông điệp asciiValue và trả về kết quả.

Một phần của tài liệu thực hành ngôn ngữ lập trình (Trang 81 - 83)

Tải bản đầy đủ (PDF)

(103 trang)