Fiz conforme o vídeo e percebi que esta sendo possível acessar o atributo saldo através da classe TesteContas.
Fiz conforme o vídeo e percebi que esta sendo possível acessar o atributo saldo através da classe TesteContas.
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
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.