欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ruby 中的 方法调用作用域

程序员文章站 2022-03-10 08:12:06
...

因此private和protected的在ruby当前和Java的定义有很大的区别:

1、在不同对象实例当中的作用域不同
Java当中,不管private还是protected的方法,都可以被同一个类别的其他对象实例调用;
Ruby当中,private方法不能被同一个类别的其他对象实例调用;

2、在类继承关系当中的作用域不同
ruby当中,不管private还是protected方法,都可以被子类继承;
Java当中,private方法不能被子类继承;

这种方法调用的差异,也许来自于不同的面向对象理念:Java的面向对象来自C++,强调类继承关系,所以方法调用限定类继承的层次结构当中的作 用域,却不强调对象实例作用域;而ruby的面向对象来自smalltalk,即使是类别也是对象,因此方法调用作用域都是针对对象实例调用来设置的。

 

 

private 但是Ruby中意为 “private to this instance”. 

你只能在你本对象的实例中访问本对象的private方法。

因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略!

所以Ruby中子类可以访问父类的private方法。但self.private_method是错的。

protected 方法 可以在本类或子类中访问,不能在其它类中访问。

在其他类中调用本类方法也不行