美文网首页
Ruby 类定义

Ruby 类定义

作者: changsanjiang | 来源:发表于2017-09-28 13:04 被阅读13次
    #!/usr/bin/ruby
    # -*- coding: UTF-8 -*-
    
    # 面向对象
        # => Ruby 是纯面向对象的语言, Ruby 中的一切都是以对象的形式出现. 
        # => Ruby 中的每个值都是一个对象, 即使是最原始的东西: 字符串、数字、甚至连 true 和 false 都是对象.
        # => 类本身也是一个对象, 是 Class 类的一个实例.
    
        # => 类用于指定对象的形式, 他结合了数据表示法和方法, 把数据整理成一个整齐的包. 
        # => 类中的数据和方法被称为类的成员. 
    
    # Ruby 类定义
        # => 当定义一个类时, 实际是定义了一个数据类型的蓝图. 实际上并没有定义任何的数据, 而是定义了类的名称意味着什么.
        # => 也就是说, 定义了类的对象将由什么组成, 以及在该对象上能执行什么操作. 
        # => 类定义以关键字 class 开始, 后跟 类名称, 最有以 end 表示定义完成. 
    #class Box # => 按照惯例, 名称必须以大写字母开头, 如果包含多个单词, 每个单词首字母大写.(CamelCase)
        # ... some data
    #end
    
    # 定义 Ruby 对象
    #box1 = Box.new
    #box2 = Box.new
    #puts box1, box2
    
    # initialize 方法
    #class Box
    
        # => 构造函数
    #   def initialize(w, h)
    #       @width, @height = w, h
    #   end
    
        # => 为了在类的外部读取类中已定义的变量, 我们可以通过定义访问器(getter)方法来访问. 
    #   def width
    #       return @width
    #   end
    
    #   def height
    #       return @height
    #   end
    
        # => Setter : 等号左边不能有空格。。。 坑爹 
    #   def setWidth= (value)
    #       @width = value
    #   end
    
    #   def setHeight= (value)
    #       @height = value
    #   end
    #end
    
    #box1 = Box.new(12, 24)
    #puts box1.width
    #box1.setWidth = 20
    #puts box1.width
    
    #class Box
    
        # 自动合成 getter setter 方法
    #   attr_accessor :width, :height
        # 构造方法
    #   def initialize(w, h)
    #       @width = w, @height = h
    #   end
    
        # 实例方法
    #   def getArea
    #       @width * @height
    #   end
    #end
    
    #box = Box.new(12, 20)
    #box.width = 232
    #puts box.width
    
    
    # 类方法 & 类变量
        # => 类变量是在类的所有实例中共享的变量. 类变量的实例可以被所有的对象实例访问. 
        # => 类变量以两个 @字符作为前缀. 类变量必须在类定义中初始化.
        # => 类方法是以 def self.method() 定义, 以 end 完成定义.
    #class Box 
    #   @@var_class = 0
    #   def initialize(w, h)
    #       @width, @height = w, h
    #   end
    
    #   def self.method_class
    #       puts "class method-- #{@@var_class}"
    #   end
    #end
    
    #puts Box.method_class
    
    
    # to_s 方法
        # => 对象的字符串表示形式.
    #class Box
        # 构造器方法
    #   def initialize(w, h)
    #       @width, @height = w, h
    #   end
    
        # 重定义 to_s 方法 
    #   def to_s
    #       "w:#{@width}, h:#{@height}" # 对象的字符串格式
    #   end
    #end
    
    #box = Box.new(12, 23)
    #puts box
    
    
    # 访问控制
        # => Ruby 提供了三个级别的实例方法保护, 分别是 public、private、protected. 
        # => Ruby 不在实例和类变量上应用任何访问控制. 
            # => Public 方法: Public 方法可被任意对象调用. 默认情况下, 方法都是 public 的, 除了 initialize 方法总是 private 的. 
            # => Private 方法: Private 方法不能从类外部访问或查看. 只有类方法可以访问私有成员. 
            # => Protected 方法只能被类及其子类的对象调用. 访问也只能在类及其子类内部进行.
    #class Box
        # 构造器方法
    #   def initialize(w, h)
    #       @width, @height = w, h
    #   end
    
        # 实例方法默认是 public 的
    #   def getArea
    #       width() * height()
    #   end
    
        # 定义 private 的访问器方法
    #   def width
    #       @width
    #   end
    #   def height
    #       @height
    #   end
    #   private :width, :height
    
        # 定义受保护的
        # protected :....
    #end
    
    #box = Box.new(12, 21)
    #puts box.getArea
    
    

    相关文章

      网友评论

          本文标题:Ruby 类定义

          本文链接:https://www.haomeiwen.com/subject/zgbmextx.html