[code]class Data {
private int dia = 0;
private int mes = 0;
private int ano = 0;
public Data(int d, int m) {
if (verificaData(d,m)) {
System.out.println("Data inserida com sucesso");
} else {
System.out.println("A data não pode ser inserida");
}
}
public boolean verificaData(int dia, int mes) {
if (dia == 31 && mes == 02) {
return false;
} else {
this.dia = dia;
this.mes = mes;
return true;
}
}
}[/code]
[code]class Funcionario {
private String nome;
private String departamento;
private String rg;
private Data dataEntrada;
public void setDataEntrada(int d, int m) {
this.dataEntrada = new Data(d,m);
}
public void getDataEntrada() {
System.out.println(this.dataEntrada.dia + "/" + this.dataEntrada.mes);
}
}[/code]
[code]class Teste {
public static void main(String args[]){
Funcionario f1 = new Funcionario();
f1.setSalario(1000);
f1.setDataEntrada(28,02);
f1.getDataEntrada();
/*
Data d = new Data(28,02);
System.out.println(d.dia + " / " + d.mes);
*/
}
}[/code]
Bom dia pessoal!
Por que consigo acessar os atributos da classe Data a partir da classe Funcionario e não consigo a partir da classe Teste?
Nota: Código todo desorganizado porque fiz diversos testes. Estou estudando java básico da apostila da caelum conforme recomendado.
Porque na classe funcionário está insntancia Data e passando estes valores logo no construtor da classe data.
Toda classe tem um construtor, mesmo que vc não o declare, toda vez que vc cria um objeto de uma classe, o construtor é o responsável por fazer uma chamada implicita ao construtor da classe pai (super()) e inicializar algum atributo daquela classe.
Está correto, mas se vc precisar acessar os dados passados sem os metodos getters e setters para cada atributo você não terá acesso.
Espero que tenha conseguido explicar, qualquer coisa, poste ai.
Fiz o teste é é isso mesmo. Passei os valores pelo construtor.
Tentei fazer direto e deu o erro de atributo private. Fiz os testes com métodos e funcionou.