রুবিতে ব্যক্তিগত পদ্ধতি:
যদি কোনও পদ্ধতি রুবিতে ব্যক্তিগত হয় তবে এটি সুস্পষ্ট গ্রহণকারী (বস্তু) দ্বারা কল করা যায় না। এটি কেবল স্পষ্টভাবে কল করা যেতে পারে। এটিকে ক্লাস দ্বারা বর্ণিত হয়েছে পাশাপাশি এই শ্রেণীর উপশ্রেণী দ্বারাও এটি স্পষ্টভাবে বলা যেতে পারে।
নিম্নলিখিত উদাহরণগুলি এটি আরও ভালভাবে বর্ণনা করবে:
1) বেসরকারী পদ্ধতির শ্রেণিকামের সাথে একটি প্রাণী শ্রেণি
class Animal
def intro_animal
class_name
end
private
def class_name
"I am a #{self.class}"
end
end
এক্ষেত্রে:
n = Animal.new
n.intro_animal #=>I am a Animal
n.class_name #=>error: private method `class_name' called
2) এম্ফবিয়ান নামক একটি প্রাণীর একটি উপক্লাস:
class Amphibian < Animal
def intro_amphibian
class_name
end
end
এক্ষেত্রে:
n= Amphibian.new
n.intro_amphibian #=>I am a Amphibian
n.class_name #=>error: private method `class_name' called
আপনি দেখতে পাচ্ছেন, ব্যক্তিগত পদ্ধতিগুলি কেবল অন্তর্নিহিতভাবে বলা যেতে পারে। এগুলি সুস্পষ্ট গ্রহণকারীদের দ্বারা কল করা যায় না। একই কারণে, সংজ্ঞায়িত শ্রেণীর শ্রেণিবিন্যাসের বাইরে ব্যক্তিগত পদ্ধতিগুলি কল করা যায় না।
রুবির সুরক্ষিত পদ্ধতি:
যদি কোনও পদ্ধতি রুবিতে সুরক্ষিত থাকে, তবে এটিকে সংজ্ঞায়িত শ্রেণি এবং এর উপশ্রেণী উভয়ই স্পষ্টভাবে বলা যেতে পারে be অধিকন্তু এগুলি স্পষ্টভাবে প্রাপ্ত প্রাপক দ্বারা কল করা যেতে পারে যতক্ষণ না গ্রহীতা স্ব স্ব বা স্ব শ্রেণীর একই শ্রেণীর থাকে:
1) সুরক্ষিত পদ্ধতি সুরক্ষার সাথে একটি প্রাণী শ্রেণি_আর
class Animal
def animal_call
protect_me
end
protected
def protect_me
p "protect_me called from #{self.class}"
end
end
এক্ষেত্রে:
n= Animal.new
n.animal_call #=> protect_me called from Animal
n.protect_me #=>error: protected method `protect_me' called
2) একটি স্তন্যপায়ী শ্রেণি যা প্রাণী বর্গ থেকে উত্তরাধিকারসূত্রে প্রাপ্ত
class Mammal < Animal
def mammal_call
protect_me
end
end
এক্ষেত্রে
n= Mammal.new
n.mammal_call #=> protect_me called from Mammal
3) একটি উভচর শ্রেণীর পশুর শ্রেণি থেকে প্রাপ্ত (উভয় স্তন্যপায়ী শ্রেণীর মতো)
class Amphibian < Animal
def amphi_call
Mammal.new.protect_me #Receiver same as self
self.protect_me #Receiver is self
end
end
এক্ষেত্রে
n= Amphibian.new
n.amphi_call #=> protect_me called from Mammal
#=> protect_me called from Amphibian
৪) গাছ নামে একটি শ্রেণি
class Tree
def tree_call
Mammal.new.protect_me #Receiver is not same as self
end
end
এক্ষেত্রে:
n= Tree.new
n.tree_call #=>error: protected method `protect_me' called for #<Mammal:0x13410c0>
Object
ব্যক্তিগত পদ্ধতিগুলিকে কল করার অনুমতি দেওয়া হয় তবেObject
পছন্দ মতো জিনিসগুলি বলা সম্ভব হত5.puts("hello world")
।