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

Classe que não é filha esta conseguindo acessar atributos do tipo protected

Fiz conforme o vídeo e percebi que esta sendo possível acessar o atributo saldo através da classe TesteContas.

5 respostas

O atributo saldo está como protected ? Se sim verifique se a classe TestaContas, mesmo não tendo herança com a classe em questão, esta no mesmo pacote da classe que tem o atributo protected se estiverem no mesmo pacote é esse o motivo que você esta podendo acessar. O modificador de acesso protected pode ser acessado por todos que herdam da classe em questão e todos que estão no mesmo pacote.

Minha classe conta esta como abstarct e o saldo por sua vez esta em protected, então como é possivel que a classe que não tem extends consegue acessar o valor?

public abstract class Conta {

    protected double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total = 0;

ai no teste conta tem:

public class TesteContas {

    public static void main(String[] args) {
        ContaCorrente cc = new ContaCorrente(123, 321);
        cc.deposita(1000);

        ContaPoupanca cp = new ContaPoupanca(456, 4568);
        cp.deposita(500);

        cc.saldo = 1000000000;

        System.out.println(cc.saldo);

    }
}

ai a saida fica 1000000000

Mas todas essas classes estão no mesmo pacote? ContaCorrente, Conta e TestaContas?

Sim, estão

solução!

Por estarem no mesmo pacote, ele tera acesso, pois como eu disse o protected é visivel por herança e por quem esta no mesmo pacote. Faça um teste tire do pacote a Classe Conta, coloque em outro e teste.