我们都知道,Ruby是一种面向对象的编程语言,而面向对象编程语言的特性,无非就是封装、继承、多态和抽象等,它的程序主体则主要涉及到类和对象,咱们这次呢,不谈别的,只是说说这个类和对象。
咱们有过其它诸如PHP、Java语言的使用经验的兄嘚应该知道,类是对象的抽象,而对象则是类的具体化实现,你好比一个类,我们把它叫做车,里面定义了外观、车标、发动机信息等等,这就是个类,而对象呢,就是我们具体化的说一辆红色外观的奔驰车,我们根据类的信息,可以具体化的区分每一辆车,这就是类和对象的意义。
具体的关于类和对象的意义啊什么的,咱也废话也就不多说了,后期会补充说明的,现在咱们来看在Ruby中如何定义一个类:
class Lu
end
通过上述代码我们就算是定义了一个Lu类,而关键词end就是用来结束这个类的,类的所有变量和常量都是在上述两行代码之间来定义的。
我们再来看下在Ruby的类中的几种变量类型:
- 局部变量:局部变量是在方法中定义的变量。局部变量在方法外是不可用的。在后续的章节中,您将看到有关方法的更多细节。局部变量以小写字母或 _ 开始。
- 实例变量:实例变量可以跨任何特定的实例或对象中的方法使用。这意味着,实例变量可以从对象到对象的改变。实例变量在变量名之前放置符号(@)。
- 类变量:类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。类变量在变量名之前放置符号(@@)。
- 全局变量:类变量不能跨类使用。如果您想要有一个可以跨类使用的变量,您需要定义全局变量。全局变量总是以美元符号($)开始。
完事就要来创建对象了,同样是用new关键词,但是写法有点不同,如下:
luyaran = Lu.new
同时,Ruby也是允许我们向new关键词传递参数来初始化变量,不过这就需要我们在创建类的时候,同时声明initialize方法,具体用法如下:
class Lu
def initialize(id, name, sex)
@lu_id=id
@lu_name=name
@lu_sex=sex
end
end
luyaran = Lu.new('1','luyaran','girl')
大概就是这么些了,我们再来看下Ruby中的函数,它的定义方法很简单,def开头,之后跟上方法名称,一般是小写,和Python差不多,不过需要end来结束这个方法,来看个简单但是完整的例子:
#!/usr/bin/ruby
class Lu
def hello
puts "Hello Ruby!"
end
end
# 使用上面的类来创建对象
object = Lu.new
object.hello
咱们最后呢,来创建一个完整的类(Lu),里面有两个方法,一个(msg)显示人物信息,一个(num)显示咱们定义的人物数量,具体方式如下:
#!/usr/bin/ruby
class Lu
@@num_person=0
def initialize(id, name, sex)
@lu_id=id
@lu_name=name
@lu_addr=sex
end
def display_details()
puts "人物 id: #@lu_id" #输出信息方式
puts "人物 name: #@lu_name"
puts "人物 sex: #@lu_addr"
end
def total_no_of_customers()
@@num_person += 1
puts "人物数量: #@@num_person"
end
end
# 创建对象
luyaran = Lu.new("1","luyaran","girl")
cuijinpeng = Lu.new("2","cuijinpeng","boy")
# 调用方法
luyaran.display_details()
luyaran.total_no_of_customers()
cuijinpeng.display_details()
cuijinpeng.total_no_of_customers()
好啦,本次记录就到这里了。
如果感觉不错的话,请多多点赞支持哦。。。