Herança

A herança é uma das principais características da orientação a objetos. Ela permite o reaproveitamento de métodos e atributos diminuindo o tempo de desenvolvimento, ainda reduzindo as linhas de código e facilitando manutenções futuras do mesmo.

Em Ruby, a herança é feita assim:

class PessoaFisica < Pessoa

  attr_accessor :cpf

  @cpf

end
class PessoaJuridica < Pessoa

  attr_accessor :cnpj

  @cnpj

end
# classe.rb

outro_aluno = PessoaFisica.new("Carlos", "SQS 108")
outro_aluno.cpf = "32.833.782-31"

cjr = PessoaJuridica.new("Empresa Júnior de Computação - CJR", "UnB, CiC/EST, AT 12/11")
cjr.cnpj = "03.632.310.000-117"

puts outro_aluno.nome
puts outro_aluno.cpf

puts cjr.nome
puts cjr.cnpj
$ ruby classe.rb
Carlos
32.833.782-31
Empresa Júnior de Computação - CJR
03.632.310.000-117

Observe que o atributo nome não está definido nas classes PessoaFisica e PessoaJuridica. O que acontece é que elas herdaram da classe Pessoa esse atributo. A herança também permite que métodos sejam herados.