在这里,我们将研究Ruby中的访问控制,这对于任何面向对象的语言都是重要的主题,并且我们很清楚Ruby是一种纯粹的面向对象的语言。您一定对本主题感到困惑,但是在说明程序代码和语法的帮助下,我们将消除其余所有内容中的困惑。
访问控制是一种阻止方法和成员变量可见性的方法,以保护数据免受不必要的修改,但是如果我们谈论Ruby,则在访问控制方面,Ruby与其他纯面向对象的语言略有不同。不能将任何类型的访问控制应用于实例和类变量的方式有所不同,因为它们的可见性始终是私有的。您可以将访问控制应用于方法。
有三种类型的访问控制在Ruby中可用。它们主要是公共的,私有的和受保护的。在C ++中,仅在进行继承时才使用访问控制,但是Ruby并非如此。
让我们详细讨论每个访问控制。
它们是在声明它们的类之外无法访问的方法。这些方法只能访问该类的私有变量。您不能将自关键字与私有方法一起使用。私有方法可以在子类的帮助下继承。该子类可以访问它们,也可以覆盖它们。
您可以按以下方式创建私有方法,
private def method end
程序:
=begin Ruby program to demonstrate private methods =end class Example def call method1 end private def method1 puts "Corona Go! Go Corona" end end obj = Example.new obj.call
输出结果
Corona Go! Go Corona
说明:
在上面的代码中,您可以看到我们无法在定义的类的实例的帮助下直接访问私有方法。我们已经在公共类中调用了该方法,然后又调用了公共类。
默认情况下,Ruby库中存在的所有方法都是公共的。即使您声明一个方法,该方法也是公共的。每个人都可以使用公共方法。它们是可以在类外部调用的方法。
您可以按照以下方式在public关键字的帮助下定义public方法:
public def method end
程序:
=begin Ruby program to demonstrate public methods =end class Example public def method1 puts "Corona Go! Go Corona" end end obj = Example.new obj.method1
输出结果
Corona Go! Go Corona
说明:
您会发现,无需任何其他方法的帮助,就可以直接访问公共方法。
您只能在属于其定义的类或其子类的实例的帮助下调用受保护的方法。在定义的类或子类之外无法访问受保护的方法。这种方法有一定的用途。
您可以通过protected关键字,通过以下方式定义protected方法,
protected def method end
程序:
=begin Ruby program to demonstrate protected methods =end class Example def call method1 end protected def method1 puts "Corona Go! Go Corona" end end obj = Example.new obj.call
输出结果
Corona Go! Go Corona
说明:
在上面的代码中,您可以看到我们无法在定义的类的实例的帮助下直接访问受保护的方法。我们已经在公共类中调用了该方法,然后又调用了公共类。