1. # 定义类方法 
  2.  
  3. class Demo 
  4.   @instvariable=100   #实例变量 
  5.     
  6. # 类变量,需要在使用之前初始化,否则会报错,也就是在get之前要先set,可以写方法set,也可以在    # initialize中做初始化的工作
  7.   @@classvariable=200
  8.  
  9.   def initialize 
  10.    
  11.   end 
  12.  
  13.   # class method 
  14.   def Demo.method1 
  15.   end 
  16.    
  17.  
  18.   # class method 
  19.   def self.method2 
  20.   end 
  21.  
  22.  
  23.   # class method 
  24.   class << self 
  25.     def method3 
  26.  
  27.     end 
  28.   end 
  29.  
  30.   # instance method 
  31.   def instmethod 
  32.  
  33.   end 
  34.  
  35.   def pubmethod 
  36.  
  37.   end 
  38.  
  39.   def primethod 
  40.  
  41.   end 
  42.  
  43.   def protmethod 
  44.  
  45.   end 
  46.  
  47.   public  :pubmethod 
  48.   private :primethod 
  49.   protected :protmethod 
  50.  
  51. end 
  52.  
  53. demo=Demo.new 
  54.  
  55. # list all method, include class method and instance method 
  56. Demo.methods 
  57.  
  58. # list all method which user defined, include class method and instance mehtod 
  59. Demo.methods(false
  60.  
  61. # list all instance method 
  62. Demo.instance_methods 
  63.  
  64. # list all instance method which user defined 
  65. Demo.instance_methods(false
  66.  
  67. # list all instance variable 
  68. Demo.instance_variables 
  69.   # list all class variables Demo.class_variables
  70.  
  71. singleton 
  72.  
  73. class MyLogger 
  74.   private_class_method :new #将new这个类方法私有化 
  75.   @@logger=nil 
  76.   def self.create 
  77.     @@logger =new unless @@logger 
  78.  
  79.     @@logger 
  80.   end 
  81. end 
  82.  
  83. MyLogger.create 

 

实例变量访问器instance variable accessor

 
  1. class Demo 
  2.  
  3.   attr_access :name 
  4.  
  5. end 
  6.  
  7. demo=Demo.new 
  8.  
  9. demo.name="andyshi" 
  10.  
  11. puts demo.name 

 

读写访问器

 
  1. attr_reader :name 
  2.  
  3. attr_writer :name 

相当于下面的两个方法。

 
  1. def name 
  2.  
  3.   @name 
  4.  
  5. end 
  6.  
  7. def name=(name) 
  8.  
  9.   @name=name 
  10.  
  11. end 

 

 

类变量访问器class variable accessor

 
  1. class Demo 
  2.  
  3.   class << self 
  4.  
  5.     attr_accessor :name 
  6.  
  7.   end 
  8.  
  9.   @name="andy" 
  10.  
  11. end 
  12.  
  13. puts Demo.name  # andy 

 

类变量访问器class variable accessor

 
  1. class Demo 
  2.  
  3.   class << self; attr_accessor :name end 
  4.  
  5.   @name="virus" 
  6.  
  7. end 
  8.  
  9. puts Demo.name # virus 

 

别名alias

 
  1. class Demo 
  2.   def longmethod 
  3.   end 
  4.   alias shortmethod longmethod 
  5. end 
  6.  
  7. demo=Demo.new 
  8. demo.longmethod 
  9. demo.shortmethod