1
resposta

modificador de acesso (protected) - Herança

Eu tenho as classes abaixo:

package banco;

public class Conta {

    protected int numero;

}
package banco.cliente;

import banco.Conta;

public class ContaCorrente extends Conta{
    protected String nome;
}

package banco.cliente;

public class TestaContaCorrente {

    public static void main(String[] args) {
        ContaCorrente cc = new ContaCorrente();

        cc.nome="Adriana"; //o atributo nome é protected, permite atribuir 
                            //porque estão no mesmo pacote 

        //Mas quando tento atribuir o valor ao atributo numero que também é do tipo protected, e ContaCorrente herda da Classe Conta, não permite. 

Eu gostaria de entender o motivo, por que "numero" não é visível pra classe filha?

        cc.numero=123; // apresenta erro de compilação

    }

}
1 resposta

Oi Adriana, tudo bem?

O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote tem acesso ao membro. O pacote da subclasse não tem acesso ao membro. Para compilar, TestaContaCorrente e Conta tem que estar no mesmo pacote.

Abraço!

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