So Sánh 3 Phương Thức Public, Protected, Private Trong Rails

Tram Ho

Khái Quát Về Public, Private, Protected

Đầu tiên, khi nhắc đến tính bao đóng ( đóng gói ) trong các ngôn ngữ ta hình dung đến các phương thức này.
Các phương thức public, protected và private nó đặc trưng cho tính bao đóng trong OOP tức là đề cập đến khả năng truy cập của các phương thức.
Mặc định, tất cả phương thức đều ở trạng thái public. Nếu không chỉ định khả năng truy cập của phương thức, nó sẽ là public.
Phương thức protected và private không thể truy cập một cách tự do, và do đó khi có một thể hiện của đối tượng, bạn sẽ không thể gọi được các phương thức đó.

1. Public

  • Với phương thức public thì chúng ta có thể gọi method đó ở bên ngoài class, sử dụng trong class đó và ở tính kế thừa thì class con có thể gọi được method public từ class cha và sử dụng nó.
  • Mặc định các method khi không khai báo thì nó đều mà public method vì thế chúng ta sẽ có 2 cách để khai báo phương thức public đó là

  • Mình sẽ lấy ví dụ về phương thức public để các bạn dễ hiểu
  • VD1:

  • Kết quả:
  • VD2:

  • Kết quả:

2. Protected

  • Với phương thức protected thì chúng ta không thể gọi method đó ở bên ngoài class và chỉ được phép gọi nó bên trong class và các class con kế thừa nó.
  • Câu hỏi đặt ra: Nếu như vậy thì làm sao để ta có thể get dữ liệu từ method protected như vậy trong khi không gọi nó bên ngoài được ?
  • Theo mình tìm hiểu thì protected nó thể gọi get dữ liệu như sau:

    • Sử dụng method public gọi lại method protected để lấy dữ liệu
    • VD1

    • Kết quả:

    • VD2

    • Kết quả:

3.Private

  • Tương tự với phương thức protected thì chúng ta không thể gọi method đó ở bên ngoài class và chỉ được phép gọi nó bên trong class và các class con kế thừa nó.
  • Cùng với câu hỏi đặt ra ở protected là : Nếu như vậy thì làm sao để ta có thể get dữ liệu từ method protected như vậy trong khi không gọi nó bên ngoài được ?
  • Thì nó có điểm khác với protected là nó không thể sử dụng bằng cách self.name_method
  • Ví dụ cho thấy sự khác nhau giữa private và protected, đối với protected thì sử dụng self nó vẫn hoạt động tốt còn private thì không nó sẽ lỗi.

  • Kết quả:

  • Ví dụ để get dữ liệu từ 1 method private bình thường
    +

    • Kết quả:

Tổng quát

Đối với một lập trình viên thì mình nghỉ các phương thức của method là cái không thể thiếu.
mình hi vọng qua bài viết này các bạn có thể hiểu sâu hơn về các phương thức đó. Cảm ơn bạn đã đọc

Happy coding ?

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo