Herança Ruby
Herança Ruby explica o símbolo < em class Article < ApplicationRecord. As aulas constroem uma classe BankAccount e subclasses como SavingsAccount e OverdraftAccount. O conteúdo passa por herdar métodos, sobrescrever um método do pai e chamar super nas três formas. Também mostra como .ancestors lista o caminho de busca de métodos e como superclass confirma a cadeia no model Catalog::Course. ApplicationRecord aparece como elo do meio marcado com primary_abstract_class. No fim, o curso trata de quando a herança se encaixa, quando usar composição e de uma pequena hierarquia que junta tudo.
O que você vai aprender
- ✓Como class Child < Parent deixa os métodos do pai disponíveis na subclasse
- ✓Sobrescrever um método do pai e como o Ruby escolhe primeiro a versão do filho
- ✓As diferenças entre super puro, super(args) e super()
- ✓Ler o caminho de busca com .ancestors e a cadeia com superclass
- ✓Por que ApplicationRecord fica entre ActiveRecord::Base e cada model
- ✓Quando usar herança e quando usar composição
class Child < Parent
Essa linha aparece desde o primeiro curso de Rails core. O curso Classes Ruby e initialize explicou class, initialize e attr_accessor, ou seja, tudo nessa linha menos um caractere: <. Esse símbolo significa herança: Article herda de ApplicationRecord. Este curso explica o que você ganha com isso.
Ler a aula completa grátis →Currículo
7 aulasclass Child < Parent
Um SavingsAccount < BankAccount vazio herda todos os métodos de BankAccount, e is_a? confirma que é um tipo dele.
Sobrescrevendo um método do pai
OverdraftAccount redefine withdraw, e o Ruby roda primeiro a versão do filho, mantendo os outros métodos herdados.
Chamando super
super chama a versão do pai de um método, e super puro, super(args) e super() repassam argumentos de formas diferentes.
A cadeia de ancestors
.ancestors devolve o caminho de busca que o Ruby segue, e superclass mostra a cadeia de herança de Catalog::Course.
ApplicationRecord também é herança
ApplicationRecord herda de ActiveRecord::Base e serve de elo compartilhado no meio, marcado por primary_abstract_class e sem tabela.
Escolhendo herança com sabedoria
Use < quando o filho é um tipo do pai, prefira composição para relações tem-um e evite cadeias profundas.
Juntando tudo: uma pequena hierarquia
Uma hierarquia SavingsAccount junta herança, sobrescrita, super e o caminho de ancestors numa regra de saldo mínimo para saque.