📅  最后修改于: 2023-12-03 15:19:52.158000             🧑  作者: Mango
在 Ruby 中,我们可以使用关键字 class
来定义类,但是也存在一种特殊的类,名为私有类。私有类可以被视为是一种在另一个类中定义的内部类,而不能被外部直接访问。
定义私有类的语法非常简单,只需要在类的内部定义即可。例如:
class MyClass
def initialize
puts "MyClass initialized"
@my_private_class = PrivateClass.new
end
class PrivateClass
def initialize
puts "PrivateClass initialized"
end
def private_method
puts "This is a private method"
end
end
def call_private_method
@my_private_class.private_method
end
end
在上面的代码中,我们定义了一个名为 MyClass
的类,同时定义了一个私有类 PrivateClass
,并在 MyClass
中使用了私有类。注意,私有类的定义必须在其他实例方法的定义之前。
我们可以在其他类的实例方法中访问私有类中的方法,但不能在类的外部直接访问私有类的方法。
my_class = MyClass.new
my_class.call_private_method
上面的代码可以正常执行,但如果将 call_private_method
方法从 MyClass
中移到类的外部,就会出现错误:
my_class = MyClass.new
my_class.my_private_class.private_method # undefined method `private_method' for #<MyClass::PrivateClass:0x007fc3bd031208> (NoMethodError)
私有类是 Ruby 中一种非常有用的特性,可以让我们将一些对外部不可见的实现细节封装起来,从而提高程序的安全性和稳定性。