好 进入类 对象 变量等概念了。
类的构造器: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想改变里面的值的时候就会报错了。。
类的构造器: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想改变里面的值的时候就会报错了。。