Z
ZHANK
面向对象

类与对象

class 定义、new/initialize、@实例变量、attr_accessor/reader/writer

类与对象

Ruby 类用 class 定义,new 创建,initialize 构造。attr_accessor 是创建 getter/setter 的快捷方式。

学完本章你将: 掌握 class/new/initialize、@实例变量、attr_accessor/reader/writer。


第一个类

ruby
class User
    # attr_accessor —— 自动生成 getter + setter
    attr_accessor :name, :email

    # attr_reader —— 只读
    attr_reader :id

    # 构造函数
    def initialize(name, email)
        @id = generate_id    # @实例变量
        @name = name
        @email = email
    end

    def introduce
        "我是#{@name},邮箱#{@email}"
    end

    private

    def generate_id
        rand(1000..9999)
    end
end

user = User.new("小明", "xm@test.com")
puts user.name       # "小明"
user.name = "小明改"  # setter
puts user.introduce  # "我是小明改,邮箱xm@test.com"

访问控制

ruby
class Demo
    def public_method; end    # 默认 public

    protected                 # 以下都是 protected
    def protected_method; end

    private                   # 以下都是 private
    def private_method; end

    # 也可单独声明
    private :private_method
end
修饰符可访问范围
public任何地方
protected同类 + 子类(Ruby 中同类的其他实例也能访问)
private只能通过 self 隐式调用(不能指定接收者)