2
respostas

É possível acessar elementos da Superclasse da Superclasse?

Sobre o exercício abaixo:

class Animal {
    // atributos e métodos
}

class Mamifero extends Animal {
    // atributos e métodos
}

class Cachorro extends Mamifero {
    // atributos e métodos
}

"pergunta do exercício: Para Cachorro, qual é a superclasse? Mamifero ou Animal?"

A resposta dessa pergunta era que Cachorro também herda tudo da classe Animal.

Minha duvida é: é possível acessar elementos da Superclasse da Superclasse? Caso contrário, como que a classe cachorro usa as propriedades da classe Avo, a classe Animal? como isso poderia ser feito?

2 respostas

Sim, vc pode acessar a classe Avó, mas para isso vc ignoraria a classe Pai para fazer isso. Não é apropriado fazê-lo, pois vc pode sobrescrever métodos úteis da classe Pai.

class A
{
    public void method()
    { /* Code specific to A */ }
}

class B extends A
{
    @Override
    public void method()
    { 
       //compares if the calling object is of type C, if yes Push the call to the A's method.
       if(this.getClass().getName().compareTo("C")==0)
       { 
           super.method(); 
       }
       else{  /*Code specific to B*/  }

    }
}

class C extends B
{
    @Override
    public void method()
    { 
        /* I want to use the code specific to A without using B */ 
        super.method();

    }
}

mas nesse trecho você não estaria usando o 'method' da classe B?

class C extends B
{
    @Override
    public void method()
    { 
        /* I want to use the code specific to A without using B */ 
        super.method();

    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software