Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Duvida de herança em OO

O comando super é utilizado nas classes filhas para que estas possam herdar um método da classe mãe sem sobrescrever, certo?

Caso, eu queira sobrescrever tal método, devo usar a notação @Override, certo?

Porém também, lembro que em uma das aulas de java, o comando super aparecia no construtor (colocado pela própria IDE), mas o instrutor dizia que já não era necessário (acredito que no JAVA 8). Alguém consegue me explicar isso?

Bom, toda essa dúvida surgiu por causa do método abaixo da classe FormularioActivity. Quero entender o por quê do return ter um super, conforme abaixo:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_formulario_ok:
                Toast.makeText(FormularioActivity.this, "Aluno salvo com sucesso", Toast.LENGTH_SHORT).show();
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
6 respostas

Oi Geovane, tudo bem ?

Acho interessante nesse caso você trocar o super, já que o retorno significa que você quer consumir o click ou não.

Trocar pelo quê?

Nesse caso, se você quiser consumir o click é true caso contrário é false.

Tudo bem, mas não respondeu a minha pergunta :/

solução!

Deixa eu melhorar :

O comando super serve para chamarmos o comportamento já definido na classe mãe ao sobrescrevermos um método por exemplo. Num construtor por exemplo serviria para poder invocar o construtor já definido na classe mãe.

Você não precisa usar o @Override para sobrescrever um método, contudo é boa prática usar, pois ele vai dar erro de compilação caso você não esteja sobrescrevendo de fato o método.

Por padrão todas as classes herdam de Object ai no construtor nós chamamos o super para a classe mãe, podemos deixar isso implicito pois o compilador vai colocar para gente por trás dos panos.

Estamos retornando o super para chamar o retorno padrão que existe na classe mãe. Como pode não ser claro o que está acontecendo, sugeri de fazer a troca para o que você quer exatamente, se quer consumir o click true, senão false.

Agora entendi. Obrigado.