in the initialize method of the parent:
@first_name, @last_name = [first_name, last_name]
try this
and:
class Son
def attr_reader :last_name
def last_name=(name)
@last_name ||= name
end
end
this way it will only define the last name if the son doesn't have the name set from parent (good for orphans).