最近在学习Ruby,是一门纯面向对象的语言,自己也对其有了一定的理解,现与大家共享。
这次主要时分享一下几个主要的概念,及其相对应的小例子。
类(class):类是对概念的定义。如 :
class Person class Snake类可以从其他类中继承相应的功能特性,但仍有其自身独特的功能特性。
对象:是类的单个实例(或某些情况下是类自身的实例)。Person类的实例时单个的人,Dog类的实例时单个的狗。
面向对象:时一种方法,运用类和对象对真实世界的概念进行建模。
变量:变量时单个对象的占位符,这个对象可以时数字,字符串,列表,或者时类的实例。
方法:代表类和或对象中的一组代码(包含多个命令和语句)。如:
class Dog def bark puts "Woof!" end end
这就是Dog类中有一个bark方法,调用后便会在屏幕上打印出 Woof! 字样。
参数:包含在括号中传递给方法的数据(或在某些情况下,跟在方法名之后,不加括号,如: puts “TEST”)
Kernel模块:某些方法无须类名即可使用,如 puts,这些方法通常都是内置的常用方法,与任何类都没有明显的关系。许多此类方法都包含在Ruby的Kernel模块中,该模块提供的功能可以从任何位置的Ruby代码中调用,无须显式的引用模块名。
最后给大家一个简单的例子:
class Person #这是创建了一个Person类
attr_accessor :name, :age, :gender
end
person = Person.new #实例化
person.name = "Tom"
person.age = 20
person.gender = "male"
puts person.gender #结果为 male,类似的你可以试试age,name
class Pet #建立一个Pet类
attr_accessor :name, :age, :gender
end
class Cat <Pet #继承
end
class Dog <Pet
end
class Snake <Pet
attr_accessor :length #可以自己创建自己独有的属性
end
cool = Dog.new # 实例化
cool.name = "Lay"
cool.age = 20
cool.length = 10 #会报错因为它没有这个属性,而是Snake独有的
snake = Snake.new
snake.length = 20
puts cool.length #20