super Frage

14/10/2009 - 17:38 von Michael Maier | Report spam
Hallo.

Ich hab ein Verstàndnisproblem bei folgendem Code.

module BikeMethods
def info
puts "I'm a Bike."
end
end

class Bike
include BikeMethods
end

class Car
def info
puts "I'm a Car."
end
end

class Vehicle < Car
include BikeMethods

def info
super
end
end

v = Vehicle.new
v.info # returns "I'm a Bike."


Da Vehicle von Car erbt sollte doch super() die Methode info() von Car
aufrufen.
Warum ist das nicht so?

lg
michi
 

Lesen sie die antworten

#1 Robert Klemme
14/10/2009 - 19:02 | Warnen spam
On 14.10.2009 17:38, Michael Maier wrote:
Hallo.

Ich hab ein Verstàndnisproblem bei folgendem Code.

module BikeMethods
def info
puts "I'm a Bike."
end
end

class Bike
include BikeMethods
end

class Car
def info
puts "I'm a Car."
end
end

class Vehicle < Car
include BikeMethods

def info
super
end
end

v = Vehicle.new
v.info # returns "I'm a Bike."


Da Vehicle von Car erbt sollte doch super() die Methode info() von Car
aufrufen.
Warum ist das nicht so?



Weil BikeMethods dazwischen hàngt. Gib mal Vehicle.ancestors aus, dann
siehst Du das.

Ciao

robert

remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Ähnliche fragen