From: Roseanne Zhang Date: 2007-07-09T02:32:13+09:00 Subject: Re: Polymorphic Code To show polymorphism and duck-typing are 2 different animals :), I add more code and comment in the above example. Pay attention to the Radio. #================= class Animal attr_reader :name def initialize(name) @name= name end def says @name + " says some strange grunty sound" end end class Dog < Animal def says @name + " says Woof!" end end class Cat < Animal attr_reader :name def says @name + " says News" end end # Attention: Radio is not an Animal class Radio attr_reader :name def initialize(name) @name= name end def says @name + " says News" end end animal = Dog.new("Fido") puts animal.says animal = Cat.new("Socks") puts animal.says animal = Animal.new("Suzi") puts animal.says # here animal is not an Animal any more!!! # It will not compile in C++/Java # It is fine, since ruby duck/dynamic typing animal = Radio.new("BBC") puts animal.says #================= -- Posted via http://www.ruby-forum.com/.