JavaFree.org | RubyOnBr.org

Executar método do ancestral

Acompanhar Executar método do ancestral 15 posts, 6 participantes

Avatar Bruno Santos 11 posts

Boa Noite,

Caros tem como executar um método da ancestral e excutar tb na classe que herda a ancestral
Exemplo:
tenho no controller pai

e aí tenho o controller filho

Testei aqui e dessa forma só será executado o “metodoQualquer” da classe filha.
Tem como executar o metodoQualquer do pai e depois do filho ?

Abraços … Muito Grato

Ps: se a perguntar for muito banal, peço compressão … =D
sou novato .. hehe

 
Avatar Fernando Allen 39 posts

chame super dentro do método da subclase:

 
Avatar Bruno Santos 11 posts

Aee Fernando!!!
Deu certo!!
Muito Obrigado!

 
Avatar FabianoPS 63 posts

To ligado que esse tópico é ancião mas creio que continua atual..

Deixando mais complexo, eu estou no FilhoController invocando o método de instancia a e de dentro do método a de filho, eu desejo chamar o método do Pai:metodoQualquer

Estou falando besteira? Teria como faze-lo?
super.método não dá certo

 
Avatar Fernando Luizão 1863 posts

Grande Fabiano =D

Não resolve chamar o método da classe filha, que vai chamar o da classe pai por tabela?

Se isso não resolver, acho que só com muita gambi… talvez se der um undef no método do filho vc consiga chamar o do pai.

 
Avatar Mereghost 1476 posts

Fabiano:

Tu quer chamar o método de instância da classe Pai que foi sobreposto pela classe filha? É isso ou me perdi no meio?

Algo assim?

 
Avatar FabianoPS 63 posts

Luizão: Simmm.. usar undef é uma solução, porém se perde o método =P
Voce anda sumidão cara, num volta mais??

Mere: é quase isso, mas tem tb o kicker:

Então a idéia seria chamar algo do tipo super.outro, infelizmente não funciona

 
Avatar Mereghost 1476 posts

Fabiano:

Hmmmm… só se tu fizer um alias do método da superclasse.

 
Avatar FabianoPS 63 posts

Puts Mere, eu não teria uma frase melhor que: “carai que zona!” uhaeuasesauesauheusahe

Acertou na mosca, só não posso dizer que é uma ótima solução, porque é um péssimo problema =P

[]s

 
Avatar nofxx 1960 posts

Inheritance é uma bosta. Vai de mixin! ;)

 
Avatar Fernando Luizão 1863 posts

Fabiano, se vc realmente precisa fazer isso, acho que é um indício forte que vc deveria estar usando composição em vez de herança. Aí é só delegar a chamada =).

 
Avatar Mereghost 1476 posts

Inheritance é uma bosta. Vai de mixin! ;)

[opinião própria]
Isso é complexo. Descartar herança completamente é bobagem. Composição nem sempre representa seu modelo corretamente e há casos onde seria mais correto de qualquer forma.

Mixins de Ruby são uma resposta genial ao caso da herança múltipla e interfaces.
[/opinião própria]

Deixe eu fazer uma breve correção:

Herança feita por motivos errados é uma bosta. Vai de composição.

 
Avatar nofxx 1960 posts

Sim, vdd. As duas são praticamente intercambiáveis, salvo que vc nao pode descender de mais de uma classe e module ñ tem super.
Agora o grande barato é como fica fácil com mixin modularizar mais as coisas, reaproveitar (e aproveitar melhor) código.
Bom mas é isso, como ficar melhor de trabalhar.

 
Avatar Fernando Luizão 1863 posts

module ñ tem super

Como assim? Dá pra incluir módulos em módulos tb:

 
Avatar Mereghost 1476 posts

Modules, ao meu ver (e a idéia associada mixins) são os substitutos ideais das interfaces (do javaworld).

Código realmente reaproveitável vai lá. Definir um comportamento que possa ser herdado por dezenas de classes. Olha só o Enumerable, tudo o que tu tem de fazer é implementar each. Aí tu ganha dezenas de métodos dis grátis. =)