Sobrescrevendo métodos em Ruby

Mesmo que você tenha uma classe filho (subclasse) que sobrescreva algum método da classe pai (superclasse), você ainda consegue acessar o método da classe pai usando a palavra reservada super.

Vejamos, classe Pai e Filho, a seguir:


class Pai
def metodo
puts "método de Pai"
end
end

class Filho < Pai
def metodo
super
puts "método de Filho"
end
end

Instanciando a classe Filho:

filho = Filho.new
filho.metodo

Obtemos o seguinte retorno:

método de Pai
método de Filho

Muito simples, não? Mas, o que acontece ao modificarmos os métodos da classe Pai e Filho. Dessa forma:

class Pai
def metodo
puts self.class
end
end

class Filho < Pai
def metodo
super
puts self.class
end
end

filho = Filho.new
filho.metodo

O quê deveria acontecer mesmo?

0 comentários: