在Ruby中,封装性是通过将代码组织到模块(module)和类(class)中来实现的。这样可以隐藏内部实现细节,只暴露必要的接口给外部使用。以下是一些实现封装性的方法:
__
)开头的方法被视为私有方法。这些方法只能在类的内部访问,而不能在类的外部访问。例如:class MyClass
def initialize
@my_private_variable = 10
end
def my_public_method
# 可以访问私有变量
@my_private_variable
end
private
def my_private_method
# 不能在类外部访问
puts "This is a private method"
end
end
module MyModule
def self.included(base)
base.class_eval do
# 添加一个类方法
def my_class_method
puts "This is a class method from MyModule"
end
# 添加一个实例方法
def my_instance_method
puts "This is an instance method from MyModule"
end
end
end
end
class MyClass
include MyModule
end
my_instance = MyClass.new
my_instance.my_instance_method # 输出 "This is an instance method from MyModule"
MyClass.my_class_method # 输出 "This is a class method from MyModule"
attr_reader
、attr_writer
和attr_accessor
方法,可以控制对类实例变量(instance variable)的访问和修改。例如:class MyClass
attr_reader :my_instance_variable
def initialize(value)
@my_instance_variable = value
end
attr_writer :my_instance_variable
end
my_instance = MyClass.new(10)
puts my_instance.my_instance_variable # 输出 10
my_instance.my_instance_variable = 20
puts my_instance.my_instance_variable # 输出 20
通过这些方法,Ruby可以实现良好的封装性,隐藏内部实现细节,提高代码的可维护性和可扩展性。