ruby 类、对象、变量

7、类Class
(1)initialize 方法 ,initialize是一个特殊方法,默认为私有,在调用new创建一个 新对象时,Ruby首先分配一些内存来保存未初始化的对象,然后调用对象的 initialize方法,
(2)inspect方法 默认将对象的ID和实例变量格式化
(3)Ruby的类永远都不是封闭的,意味着可以向一个已有的类中添加方法,包括内 建类
(4)Ruby的类允许继承,如class Child < Parent
(5)继承与Mixins Ruby支持单继承,但可以从任何数量的mixin中引入功能,这 提供了可控的、类似于多继承的能力。
(6)方便快捷的定义属性的访问方法,如:
class Song
attr_reader :name, :artist, :duration
end
类似的方法有:attr_writer 写属性
(7)虚拟属性 使用属性创建方法创建虚拟实例变量,对外部就像其他属性一样,但 内部却没有对应的实例变量,如:
class Song
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration=(value*60).to_i
end
(8)类变量 类似于C++中的类静态变量,由两个@开头,如:@@count
(9)类方法 类似于C++中的类静态函数,定义类方法的方式还有
class Demo
def Demo.meth1

end
def self.meth2

end
class << self
def meth3

end
end
end

8、Singleton模式
class MyLogger
private_class_method :new
@@logger = nil
def MyLogger.create
@@logger = new unless @@logger
@@logger
end
end
注释:private_class_method 将类方法声明为私有;
9、变量不是对象,而是对象的引用:
person1 = “Tim”;person2=person1
person1[0]=”J”
person2
将person1赋值给person2不会创建任何新对象;它只是将person1的对象引用拷贝给 person2,因此person1和person2都指向同一个对象。赋值别名对象,潜在地给你引用 同一对象的多个变量,可以通过String的dup方法来避免。
person2 = person1.dup
10、可以通过冻结一个对象来阻止他人对其进行修改, 如 person1.freeze

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值