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