~/rubytesting/programmingRuby$ !cat cat -n Visibility.rb 1 class Visibility 2 protected 3 def tutu_prot 4 puts "Prot" 5 end 6 7 private 8 def tutu_priv 9 puts "Priv" 10 end 11 12 public 13 def tutu_pub 14 puts "Pub" 15 end 16 end 17 18 19 class Child < Visibility 20 21 def chachi 22 puts "in chachi" 23 self.tutu_prot 24 end 25 26 def chuchu 27 puts "in chuchu" 28 self.tutu_priv 29 end 30 end 31 32 if $0 == __FILE__ 33 b = Child.new 34 b.tutu_pub # <- Pub 35 begin 36 b.tutu_priv # Exception <NoMethodError> raised <private method `tutu_priv' called for #<Child:0x100168068>> 37 rescue NoMethodError 38 puts "Exception <#{$!.class}> raised <#{$!}>" 39 end 40 b.chachi # <- in chachi 41 # Prot 42 begin 43 b.chuchu # <- Exception <NoMethodError> raised <private method `tutu_priv' called for #<Child:0x100168068>> 44 rescue 45 puts "Exception <#{$!.class}> raised <#{$!}>" 46 end 47 48 begin 49 c = Visibility.new 50 c.tutu_pub # <- Pub 51 c.tutu_prot # <- Exception <NoMethodError> raised <protected method `tutu_prot' called for #<Visibility:0x100167b40>> 52 rescue NoMethodError 53 puts "Exception <#{$!.class}> raised <#{$!}>" 54 end 55 end