Iniciantes em Java SE

Olá! Pessoal sou novo em Java e estou fazendo uma agenda eletrônica em Java usando o crud em um ArrayList. Tenho essas três classes:
Tenho três classes:
Contato—> Aqui tenho meus atributos e metódos setters e getters.
Endereco—>Aqui tenho o endereco com os atributos: rua, numero e bairro.
Agenda—>Minha classe principal onde se encontra a main que irá chamar e acessa as duas classes acima e adicionar os dados no ArrayList.
O problema é que tenho que pega a rua, numero e bairro atributos da classe Endereco e adiciona eles no atributo endereco da classe contato todos os atributos quero que permaneça private. Não sei como manda os códigos para vocês.

Agenda.java

package Agenda;

public class Agenda {
public static void main(String[] args) {

Endereco endereco = new Endereco();
Contato contato = new Contato();
contato.setEndereco(endereco); //Aqui é associação por agregação
//A classe contato recebe todos os atrubutos de endereco, atravez da passagem do objeto de endereco

contato.getEndereco().setBairro("Bairro aqui");
contato.getEndereco().setNumero("Numero aqui");
contato.getEndereco().setRua("Nome da rua aqui");

 
}  

}

Contato.java

package Agenda;

public class Contato {
//Declare como privados os atributos
//Depois encapsule dentros dos sets e gets
//Use o atalho alt + insert para inserir os sets e gets

private String nome; 
private String telefone;
//E demais atributos que quiser

//Associe a classe Contato a classe Endereco, para receber os atributos 
private Endereco endereco;

//Depois encapsule tambem

public Endereco getEndereco() {
    return endereco;
}

public void setEndereco(Endereco endereco) {
    this.endereco = endereco;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getTelefone() {
    return telefone;
}

public void setTelefone(String telefone) {
    this.telefone = telefone;
}

}

Endereco.java

package Agenda;

public class Endereco {
private String rua, numero, bairro;

public String getRua() {
    return rua;
}

public void setRua(String rua) {
    this.rua = rua;
}

public String getNumero() {
    return numero;
}

public void setNumero(String numero) {
    this.numero = numero;
}

public String getBairro() {
    return bairro;
}

public void setBairro(String bairro) {
    this.bairro = bairro;
}

}

Obrigado! Resolveu meu problema. Agora quero fazer uma atualização em um elemento do meu ArrayList de Objetos