类与对象
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 隐式调用(不能指定接收者) |