my way in ruby第二课

好 进入类 对象 变量等概念了。
类的构造器:initialize
类的tostring()方法 inspect 将显示class的id和它的相关属性

继承

Ruby的继承自动化之余 也比较松散
当子类调用一个自己没有的方法但是在父类才有的方法时 会调用父类里面那个方法。

类与对象
对象变量只是类中的private的变量 它只存在于这个类的一个实例而已
而类变量则是这个类的静态资源 所有这个类的实例都会共享这个数据的类存区。
把它理解成java类中的全局静态变量就ok。

实例变量的初始化放在initialize方法中
类变量就不需要。

类方法: 是无需要新建类的实力就能通过类名直接访问的方法--忘记java才能领会ruby。。

单例与构造器:
ruby的单例与java差不多 怎么还是没忘掉java 郁闷。。
首先要把这个类的new方法设成私有的方法:private_class_method:new
这样外界就不能直接new这个类对象了 。
然后声明以讹空类对象来装这个类里面新建的对象(随便什么名字都行):
@@fuck = nil

当然最后就是定义一个方法来在里面new对象了,new代表着生命的创造啊 ,当然
是private了。。闲话少说 继续:
def getNew
@@fuck = new unless @@fuck---这里的意思是除非今天还没有fuck过,要不当然继续啦
@@fuck = new unless @@fuck
@@fuck 如果是fuk过了 就返回吧。。。
end

完整:

class SingleFuck

private_class_method:new

@@fuck = nil

def self.getNew self的意思是自己来。。。这个不用解释了吧。。
@@fuck = new unless @@fuck
@@fuck
end

end

封装特性:
ruby也有三招:public protected private 当没有特别说明的时候默认是public的。

public
def fuck -------wc?
end

protected
def func2
end

private
def do
end


变量:
ruby中 变量即是引用,所有变量的值之存在于堆栈中,变量只是这个堆栈中一个引用,变量之间的传递只是引用传递不是值传递,

def initialize
woman = nil
copywoman = nil
end

woman = 'oh yeah'
copywoman = woman
woman[0] = 'n'
woman[1] = 'o'
当woman改变的时候 copy的值也改变。这就是引用传递。

当然如果硬要值传递的话也没问题:
copywoman = woman.dup
这时 copy指向的引用和woman就不一样了。
当你不想这个引用指向的堆栈中的值被被人改变时,你可以把它冻结掉
woman.freeze..当copywoman想改变里面的值的时候就会报错了。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值