公开方法没有任何存取限制,可以被该类别或是子层类别的实体呼叫。
一般而言当你定义一个方法後,这个方法就会是公开方法。
或是也可以在方法外的上方加一个 public,public 以下的都会是公开方法,且不用加 end 作区隔,不过通常不会这样写。
范例:
class Drama
public
def korea
puts "鱿鱼游戏"
end
def japan
puts "今际之国"
end
end
class Perfect < Drama
end
number456 = Drama.new
number456.korea
pokers = Perfect.new
pokers.japan
上述范例定义一个 Perfect 类别继承自 Drama,两个类别创造出来的实体都可以呼叫 Drama 内的公开方法。
执行完後会印出鱿鱼游戏以及今际之国。
私有方法是为了要保护功能,防止外部直接存取并使用他,私有方法有两个限制:
范例:
class Drama
def korea
puts "鱿鱼游戏"
end
def japan
puts "今际之国"
end
private
def america
puts "后翼弃兵"
end
end
beth = Drama.new
beth.america
上述范例会喷出错误讯息:
private method 'america' called for #<Perfect:0x00005637c2aa8020> (NoMethodError)
如果想要呼叫私有方法的话要把他放在公开方法内才行:
范例:
class Drama
def korea
puts "鱿鱼游戏"
end
def japan
puts "今际之国"
end
def good
america
end
private
def america
puts "后翼弃兵"
end
end
lastyear = Drama.new
lastyear.good
上述范例可成功印出后翼弃兵
puts 本身在整个环境内是一个私有方法,也可使用 self.puts 印出东西。
跟 private 一样功用,也不能在外面直接呼叫他,但可以有明确的 receiver。
参考:
[1]Public, Protected and Private Method in Ruby
[2]Ruby Access Control Basics: Public vs Private vs Protected methods
关於迷雾森林故事 序 很久很久以前 在森林的深山林里 有着一群喜欢开趴的动物 就是大家俗称的趴踢 ...
在学习一个新东西的最初阶段 撞的墙一定是最多的,撑过去就好了! Design token 其实原本...
因为前几天我们新增了 verification_code 这张表的栏位,调整了发送认证码的流程,并且...
Keyword: Flutter 、React Native、KMM 对於只要一份Code就能部署到...
这篇的上一篇:https://ithelp.ithome.com.tw/articles/10283...