2017-06-15 189 views
0

我一直在做一些搜索,但我不完全理解继承和实例之间的区别。继承和实例化有什么区别?

两者似乎都是一样的我无法弄清楚在哪种情况下使用哪一种。

+0

请问您能举一个让您感到困惑的例子吗?或者解释一下你相信这些术语的含义?使用隐形代码很难帮助某人。 – 4castle

+2

他们没有任何可比性!两种不同的CS术语做不同的事情。 1或2谷歌搜索(ES)应该有你的答案。 – zee

回答

0

就对象和类而言,您可以用这种方式来思考它。比方说你有你创建了一个玩具的蓝图,其中有两个轮子和一个把手

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 

即使我没有明确地定义它们,FlashyToy仍然有轮子和手柄,因为玩具类的属性是继承

实例化是您将实际复制蓝图的位置。所以换句话说,如果我制作了一个实际的FlashyToy或者我制作了一个玩具,那么我已经实例化了这个类

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 
1

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

class Mammal 
    def walk 
    end 
end 

class Bat < Mammal 
    def fly 
    end 
end 

蝙蝠是哺乳动物,而不是相反。鉴于上面的例子,一只蝙蝠可以飞行步行,但一只哺乳动物只能行走。

Instantatiation是指创建一个Class的实例,

b = Bat.new 

在上述例子中是b蝙蝠的实例。实例化的对象可以执行定义为自己的类的实例方法的任何方法,并且可以创建实例变量来表示状态:

def set_wing_count 
    @wings = 2 
end 

这两个概念是完全不同的。

相关问题