Initialize and superclass

J

jvivenot

Hi
I'd like to know something :
Lets say I have two classes A and B, where A is B's superclass. B's
initialize method initialize her own variables, but how could I do in
order to run A.initialize before B.initialize when I write B.new ?
I hope my text is understandable.
Thanks everyone.
Bye

Julien Vivenot
 
T

Tilman Sauerbeck

--TB36FDmn/VVEgNH/
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

jvivenot [2006-08-21 01:35]:
Lets say I have two classes A and B, where A is B's superclass. B's
initialize method initialize her own variables, but how could I do in
order to run A.initialize before B.initialize when I write B.new ?

If I understood your problem correctly, you're after the "super" method.
Try the following code:

class A
def initialize
puts "initializing instance of A"
end
end

class B
def initialize
super
puts "initializing instance of B"
end
end

Regards,
Tilman

--=20
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

--TB36FDmn/VVEgNH/
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFE6I/127uLisrW2w8RAsagAJ9URbubiAQdrOigKCtD7K9wvUorlQCfYxJP
UKxGwABqFGA/UVG8oN0BbZA=
=k6Hm
-----END PGP SIGNATURE-----

--TB36FDmn/VVEgNH/--
 
E

Eero Saynatkari

Tilman said:
jvivenot [2006-08-21 01:35]:
Lets say I have two classes A and B, where A is B's superclass. B's
initialize method initialize her own variables, but how could I do in
order to run A.initialize before B.initialize when I write B.new ?

If I understood your problem correctly, you're after the "super" method.
Try the following code:

<snip />

And in the event that you some arguments to B that
A does not know how to handle, use the second form:

class A
def initialize(foo)
puts "initializing instance of A with #{foo}"
end
end

class B
def initialize(foo, bar)
super(foo)
puts "initializing instance of B with #{foo} and #{bar}"
end
end
 
J

jvivenot

Wonderful !
Thanks.

I think there will be many days during which I'll stay a Ruby-Nuby....

Bye, and thanks everyone

Julien Vivenot

Eero said:
Tilman said:
jvivenot [2006-08-21 01:35]:
Lets say I have two classes A and B, where A is B's superclass. B's
initialize method initialize her own variables, but how could I do in
order to run A.initialize before B.initialize when I write B.new ?

If I understood your problem correctly, you're after the "super" method.
Try the following code:

<snip />

And in the event that you some arguments to B that
A does not know how to handle, use the second form:

class A
def initialize(foo)
puts "initializing instance of A with #{foo}"
end
end

class B
def initialize(foo, bar)
super(foo)
puts "initializing instance of B with #{foo} and #{bar}"
end
end
Regards,
Tilman
 
J

jvivenot

Actually, it seems that I if I write only super because the super
initialize needs no argument, the super method gives every arguments of
the B class to the A initialize, and thus I encounter a ArgumentError.
That's OK
Thanks

Julien Vivenot
Wonderful !
Thanks.

I think there will be many days during which I'll stay a Ruby-Nuby....

Bye, and thanks everyone

Julien Vivenot

Eero said:
Tilman said:
jvivenot [2006-08-21 01:35]:
Lets say I have two classes A and B, where A is B's superclass. B's
initialize method initialize her own variables, but how could I do in
order to run A.initialize before B.initialize when I write B.new ?

If I understood your problem correctly, you're after the "super" method.
Try the following code:

<snip />

And in the event that you some arguments to B that
A does not know how to handle, use the second form:

class A
def initialize(foo)
puts "initializing instance of A with #{foo}"
end
end

class B
def initialize(foo, bar)
super(foo)
puts "initializing instance of B with #{foo} and #{bar}"
end
end
Regards,
Tilman
 
G

gwtmp01

Actually, it seems that I if I write only super because the super
initialize needs no argument, the super method gives every
arguments of
the B class to the A initialize, and thus I encounter a ArgumentError.
That's OK
Thanks

If you don't want to pass any arguments to the superclass's initialize
use this version:

super() # no arguments

So you've got:

super # pass along the arguments to the current method
super() # pass no arguments
super(1,2) # pass these explicit arguments



Gary Wright
 
J

jvivenot

Oh, thanks, but actually, I found it by myself, my previous message was
a just a notification of the fact that it would be better to write ()
instead of nothing just after super.
Thanks anyway.
Bye

Julien Vivenot
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,210
Messages
2,571,091
Members
47,691
Latest member
Jenny-jane

Latest Threads

Top