6.4 單例方法

同一份設計藍圖(類),不同的實例對象,可以表現出不同的行爲特徵,這種(不牽涉繼承的)多態性在Java 這樣的靜態語言裏,通過方法重載得到具體實現。6.1節中我們分析知道了Ruby中的重載是指重寫,Ruby 如何來反映不同實例對象的不同行爲特徵呢?
在Ruby裏,可以給具體的實例對象添加實例方法,這個方法只屬於這個實例對象,我們把這樣的方法稱之爲單例方法。
看程序  E6.4-1.rb :
ruby 代碼
  1. #E6.4-1.rb     
  2. class Person     
  3.   def talk   
  4.     puts "Hi! "      
  5.   end     
  6. end  
  7.   
  8. p1=Person.new  
  9. p2=Person.new  
  10.   
  11.   def  p2.talk        #定義單例方法p2.talk   
  12.     puts "Here is p2. "      
  13.   end       
  14.   
  15. def p2.laugh          #定義單例方法p2. laugh   
  16.     puts "ha,ha,ha... "      
  17.   end     
  18.   
  19. p1.talk      # =>  Hello!   
  20. p2.talk      # =>  Here is p2.   
  21. p2.laugh     # =>  ha,ha,ha...  

 單例方法也叫作單件方法。定義單例方法,首先要生成一個實例對象,其次,要在方法名前加上對象名和一個點號“.”。
程序 E6.4-1.rb 中,對象p1不可以laugh ,  laugh方法只屬於p2對象。
實例方法,屬於類的每個實例對象。單例方法只出現在單個實例對象中。用單例方法可以極大地豐富多態性在 Ruby中的表現力。

完整閱讀,請看我寫的 Ruby語言中文教程all in one    
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章