【RUNOOB】Ruby类和对象
1.在ruby中定义类
(1) 类以关键字class开始,后跟类的名称,类名的首字母应该大写;
(2) 使用关键字end终止一个类,类中的所有数据成员都是介于类定义和end关键字之间;
1 #示例1 2 class Customer 3 end
2.ruby类中的变量
2.1 局部变量
(1) 局部变量是在方法中定义的变量。局部变量在方法外是不可用的。
(2) 局部变量以小写字母或 _ 开始。
2.2 实例变量
(1) 实例变量可以跨任何特定的实例或对象中的方法使用。
(2) 实例变量在变量名之前放置符号(@)。
2.3 类变量(类似于system verilog中的静态变量)
(1) 类变量可以跨不同的对象使用。类变量属于类,且是类的一个属性。
(2) 类变量在变量名之前放置符号(@@)。
1 class Customer 2 @@no_of_customers=0 3 end
2.4 全局变量
(1) 类变量不能跨类使用。全局变量可以跨类使用。
(2) 全局变量总是以美元符号($)开始。
3.ruby类中的成员函数
(1) ruby中,函数被成为方法; 类中的每个方法都是以关键字def开始,后跟方法名,使用关键字end结束一个方法;
(2) 方法名总以小写字母开头;
1 #示例1 2 class Sample 3 def function 4 statement 1 5 statement 2 6 end 7 end
1 #示例2 2 class Sample 3 def hello 4 puts "Hello Ruby!" 5 end 6 end
1 #示例3 2 #!/usr/bin/ruby 3 4 class Sample 5 def hello 6 puts "Hello Ruby!" 7 end 8 end 9 10 # 使用上面的类来创建对象 11 object = Sample. new 12 object.hello
4.ruby中创建对象
(1) 对象是类的实例;在ruby中,可以使用类的方法new创建对象;
(2) 方法new属于类方法,在ruby库中预定义;
1 #示例1 2 cust1=Customer.new 3 cust2=Customer.new
(3) 可以给new方法传递参数用于初始化类的变量; 这种情况下,需要在创建类的同时声明方法initialize;
1 #示例2 2 class Customer 3 @@no_of_customers=0 4 def initialize(id, name, addr) 5 @cust_id=id 6 @cust_name=name 7 @cust_addr=addr 8 end 9 end 10 11 cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya") 12 cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
5.ruby类案例
1 #!/usr/bin/ruby 2 3 class Customer 4 @@no_of_customers=0 5 def initialize(id, name, addr) 6 @cust_id=id 7 @cust_name=name 8 @cust_addr=addr 9 end 10 11 def display_details() 12 puts "Customer id #@cust_id" 13 puts "Customer name #@cust_name" 14 puts "Customer address #@cust_addr" 15 end 16 17 def total_no_of_customers() 18 @@no_of_customers+=1 19 puts "Total number of customers: #@@no_of_customers" 20 end 21 end