如何在Ruby中创建类和对象

225 阅读4分钟

Ruby是一种强大的编程语言,提供了现代的功能和工具。其中一个特点是支持面向对象编程,包括封装多态性、抽象、继承等等。

本教程将讨论面向对象编程的一个关键概念:对象和类。

什么是Ruby类和O bjects?

让我们从类开始。

类是创建对象和提供价值实现的蓝图,包括变量、方法、属性等等。

另一方面,一个对象是一个类的单一实例。以一辆汽车为例。我们可以创建一个描述建造汽车的蓝图的类。这个类的属性可以是所有汽车的共同点。

  1. 一个发动机
  2. 一个门
  3. 一个模型
  4. 制造商

汽车类也可以包括方法,这些方法是类对象可以执行的动作。一个例子是,汽车可以点火、加速、停车,等等。

当你需要创建只有不同方面的类似对象时,类是非常方便的。与其为奔驰汽车、布加迪汽车、特斯拉汽车等声明一个代码块,你可以创建一个由每个模型引用的单一类。

如何在Ruby中创建一个类和对象

Ruby是一种不可思议的语言,而且非常容易使用。它为创建一个类提供了一个普遍简单的语法。

一般的语法是。

class ClassName

  # BLOCK
end

我们首先调用class关键字,然后是我们想要创建的类的名称。类的名字以大写字母开始,下面的名字则使用CamelCase。

在类的内部,我们定义了该类所需要的所有变量和方法。

我们使用end关键字来关闭类的代码。

例子

让我们来看看一个汽车类的例子。

class Car
    def initialize(engine, name, year)
        @engine = engine
        @name = name
        @year = year
    end
    def ignite
        puts "Ignition!"
    end
    def stop
        puts "Stopping vehicle"
end
    def accelerate(target_speed)
        @target_speed = target_speed
        puts "Car accelerating at #{target_speed} m/h"
    end
end

f = Car.new("a108d", "F A-Class", 2010 )
g = Car.new("00Ca", "Zero G-8", 2011)
h = Car.new("777d", "G Potato", 2022)

在上面的代码中,我们首先定义了汽车类。在这个类中,我们定义了initialize方法,这是Ruby中的一种特殊类型的方法,用于用所需的参数创建类的调用实例。initialize方法充当了new的构造函数。

在初始化方法中,我们传递汽车的发动机、名称和制造年份。然后我们对汽车进行一些操作,包括点火、加速和停车。

最后,我们创建一个汽车类的实例。我们把这称为实例化,因为我们创建了一个类的实例。

我们传递初始化方法的参数,它创建了三种独特的汽车类型。

使用类方法

在上面的例子中,我们创建了一个有各种方法的类,但还没有使用它们。要使用一个方法,我们只需输入对象的名称,然后是句号和方法的名称。

语法是。

my_object.method

让我们来看看前面的例子;要点燃f车,我们可以这样做。

// Refer code above
f = Car.new("a108d", "F A-Class", 2010 )
g = Car.new("00Ca", "Zero G-8", 2011)
h = Car.new("777d", "G Potato", 2022)
f.ignite

如果我们运行上面的代码,我们应该看到汽车成功点火,打印出字符串 "Ignition!"

来自initialize方法的每个部分都像一个命令,定义了从该类创建的对象可以做的动作。

获取源类

Ruby中的每个类型都是一个类的对象。你可以使用class方法查看对象是从哪个类中创建的。

比如说

class Car
    def initialize(engine, name, year)
        @engine = engine
        @name = name
        @year = year
    end
    def ignite
        puts "Ignition!"
    end
    def stop
        puts "Stopping vehicle"
    end
    def accelerate(target_speed)
        @target_speed = target_speed
        puts "Car accelerating at #{target_speed} m/h"
    end
end

f = Car.new("a108d", "F A-Class", 2010 )

puts "hello".class
puts 10.class
puts 11.023.class
puts f.class

一旦我们执行代码,我们应该看到字符串、整数、浮点和汽车的类为。

String
Integer
Float
Car

总结

在本教程中,我们学习了Ruby中使用类和对象的面向对象编程的基础知识。值得注意的是,OOP是一个庞大的话题。请查看其他资源以了解更多。