Ruby on rails 继承和实例化之间有什么区别?

Ruby on rails 继承和实例化之间有什么区别?,ruby-on-rails,Ruby On Rails,我一直在做一些搜索,但我不太理解继承和实例化之间的区别 在我看来,两者都是一样的,我不知道在什么情况下使用哪一种 继承是指类可以从其他类导入行为的方式,例如: class Mammal def walk end end class Bat < Mammal def fly end end 在上面的例子中,b是Bat的一个实例。实例化对象可以执行其类中定义为实例方法的任何方法,并可以创建实例变量来表示状态: def set_wing_count @wings = 2

我一直在做一些搜索,但我不太理解继承和实例化之间的区别


在我看来,两者都是一样的,我不知道在什么情况下使用哪一种

继承是指类可以从其他类导入行为的方式,例如:

class Mammal
  def walk
  end
end

class Bat < Mammal
  def fly
  end
end
在上面的例子中,b是Bat的一个实例。实例化对象可以执行其类中定义为实例方法的任何方法,并可以创建实例变量来表示状态:

def set_wing_count
  @wings = 2
end

这两个概念完全不同。

就对象和类而言,你可以这样想。假设你创造了一个玩具的蓝图,它有两个轮子和一个把手

class Toy
    @wheels
    @handle

    def initialize(wheels, handle)
        @whees = wheels
        @color = handle
    end

    def start
        puts "Vroom"
    end
end
然后我看到你的设计,我喜欢它,但我想扩大它,包括闪光灯。我可以自己画一幅和你一样的蓝图:

class FlashyToy
    @whees
    @handle
    @flashyLight
end
但那将是一种浪费,因此我可以继承您设计的车轮和把手,只需添加新的灯光:

class FlashyToy < Toy
    @flashyLight
end

你能举一个让你困惑的例子吗?或者解释一下你认为这些术语的含义?用看不见的代码帮助别人是很困难的。他们在任何方面都是不可比的!两个不同的CS术语做不同的事情。1到2次谷歌搜索应该会为你找到答案。
class FlashyToy < Toy
    @flashyLight
end
toy1 = Toy.new(2, 1)
toy2 = FlashyToy.new(3, 2)
toy1.start  #print Vroom
toy2.start  #print Vroom even though not directly defined in flashy toy