Phương thức khởi tạo (constructor) là private hoặc public trong ruby?Khởi tạo lớp Ruby (hàm tạo) là phương thức riêng hoặc phương thức công khai?
11
A
Trả lời
16
Hãy xem:
class Test
def initialize; end
end
p Test.new.private_methods.sort.include?(:initialize)
này in true
, vì vậy initialize
là một phương pháp riêng. Điều này có ý nghĩa, nó chỉ được gọi bởi phương thức lớp new
nếu đối tượng được tạo ra. Nếu chúng tôi muốn, chúng tôi có thể làm điều gì đó như thế này:
class Test
def initialize
@counter = 0
end
def reset!
initialize
end
end
Việc lạm dụng nhà xây dựng như thế này có thể dẫn đến các sự cố nếu quá trình khởi tạo biến đơn giản.
4
Phương thức initialize
trong một lớp sẽ tự động trở thành Riêng tư.
Bạn có thể kiểm tra xem nó sử dụng:
puts ClassName.private_methods.sort
Các vấn đề liên quan
- 1. Phương thức khởi tạo riêng trong lớp trừu tượng
- 2. Gọi phương thức lớp riêng từ phương thức cá nhân
- 3. Truy cập các phương thức "Công khai" từ các phương thức "Riêng tư" trong lớp javascript
- 4. Phương thức khởi tạo phương thức trong các lớp tham chiếu R
- 5. Thừa kế phương thức khởi tạo() trong ruby?
- 6. Tạo phương thức gốc java cho hàm tạo
- 7. Gọi phương thức cá thể riêng từ phương thức lớp trong Ruby
- 8. RSpec: Phương thức riêng tư sơ khai
- 9. Tạo một phương thức đồng thời là một thể hiện và phương thức lớp
- 10. Thực hành tốt nhất của Junit: Phương thức công khai gọi nhiều phương thức riêng tư
- 11. NullPointerException trong phương thức khởi tạo JavaFX
- 12. Phương thức khởi tạo trong giao diện
- 13. Phương thức gọi trong lớp cha từ các phương thức lớp con trong Ruby
- 14. Tạo phương thức hashCode() - Java
- 15. Tại sao sử dụng phương thức khởi tạo thay vì hàm tạo?
- 16. Tạo danh sách các phương thức của một lớp với các kiểu phương thức
- 17. Ruby: Thêm những thứ để khởi tạo phương thức thông qua các mô-đun
- 18. Trình khởi tạo tĩnh và phương thức tĩnh Trong Java
- 19. Tại sao phương thức giao diện C# được triển khai trong một lớp là công khai?
- 20. Phương thức nhà máy trong Ruby
- 21. Tạo phương thức GetHashCode trong C#
- 22. Lớp tĩnh Vs. Lớp với hàm tạo riêng và tất cả các thuộc tính và phương thức tĩnh?
- 23. AS3: gọi phương thức lớp tĩnh - tên lớp và phương thức là các chuỗi
- 24. ID của đối tượng là đối số hàm tạo hoặc thông qua phương thức setter?
- 25. Sử dụng các phương thức setter trong hàm khởi tạo: thực hành xấu?
- 26. C# - Cách tạo phương thức chỉ hiển thị với các lớp thừa hưởng lớp cơ sở của phương thức
- 27. Gọi phương thức riêng xxx bằng self.xxx() từ bên trong phương thức riêng khác dẫn đến lỗi "phương thức riêng` xxx 'được gọi là "
- 28. Intellij tạo javadoc cho các phương thức và lớp học
- 29. Phương thức nhập của Ruby có luôn riêng tư không?
- 30. Phương thức khởi tạo tĩnh hoạt động như thế nào?
Bạn cũng có thể gọi 'initialize' của một đối tượng bởi 'obj.send (: khởi tạo)'. –
@undur_gongor: Vâng, điều đó phù hợp với bất kỳ phương pháp riêng tư nào. –