在本教程中,我们将看到Ruby中的私有类的概念。尽管在Ruby中,私有类的概念与其他语言相比还是有些不同。我们将在其余内容中借助语法和示例来理解私有类的概念。
在Ruby语言中,存在诸如private,protected和public之类的关键字,但是在使用我们以前用其他语言获得的类时,它们没有提供任何帮助。
通过在程序代码中调用它们的方式来区分它们,因为在Ruby中所有类都被视为对象。私有类可以理解为子类,它们是在私有常量的帮助下声明的。如果要访问私有类,则必须使用外部类。如果某个类被声明为私有,则永远不能使用显式接收器来调用它,您将始终必须使用隐式接收器来调用它们。Ruby不允许您将外部类设为私有。
语法:
private_constant: class_name
范例1:
=begin Ruby program to demonstrate private classes =end class Outer class Inner def prnt1 puts "Hello from Nhooo.com" end def prnt2 puts "Corona Go! Go Corona" end end private_constant :Inner end Object1 = Outer::Inner.new Object1.prnt2
输出结果
private constant Outer::Inner referenced (repl):18:in `<main>'
说明:
在上面的代码中,您可以观察到解释器抛出错误,因为我们是显式用户并且无法以这种方式访问它们。
如何在外部类的帮助下访问私有类?
范例2:
=begin Ruby program to demonstrate private classes =end class Outer class Inner def prnt1 puts "Hello from Nhooo.com" end def prnt2 puts "Corona Go! Go Corona" end end private_constant :Inner def ob ob1 = Inner.new ob1.prnt1 ob1.prnt2 end end Object1 = Outer.new Object1.ob
输出结果
Hello from Nhooo.com Corona Go! Go Corona
说明:
在上面的代码中,您可以观察到如何在公共类的帮助下访问私有类或子类?我们创建了一个公共方法ob,在其中创建私有类Inner的实例,并在该实例或对象的帮助下调用其方法。这是访问内部类或私有类的唯一方法。