Como faço para acessar uma variável de um objeto encapsulado que está dentro de uma String?

Olá, eu comecei recentemente neste mundo do desenvolvimento e estou estudando orientação a objetos, porém não consigo acessar alguns dados encapsulados, então eu não consigo adivinhar se é a lógica errada ou falta algum comando que eu ainda não sei. Aqui vai meu código sobre um banco que estou tentando criar:

==========classe Conta===========

import java.util.ArrayList;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Conta {
    //Declaração das variáveis
    SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date d = new Date();
    private int agencia;
    private int numero;
    private float saldo;
    private float limite;
    private ArrayList<Pessoa> titular;
    private StringBuilder log;
    //Construtores
    public Conta(){
        this.agencia=0;
        this.numero=0;
        this.saldo=0f;
        this.limite=0f;
        this.titular = new ArrayList<>();
        this.titular.add(new Pessoa());
        log=new StringBuilder();
    }
    public Conta(int agencia, int numero, float saldo, float limite, String nome, String telefone, String cpf, String endereco) {
        this.agencia = agencia;
        this.numero = numero;
        this.saldo = saldo;
        this.limite = limite;
        this.titular = new ArrayList<>();
        this.titular.add(new Pessoa(nome,telefone,cpf,endereco));
    }
    public Conta(int agencia, int numero, String nome){
        this.agencia = agencia;
        this.numero = numero;
        this.titular = new ArrayList();
        this.titular.add(new Pessoa(nome));
    }
    //Getters e setters
    public int getAgencia() {
        return agencia;
    }
    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }
    public int getNumero() {
        return numero;
    }
    public void setNumero(int numero) {
        this.numero = numero;
    }
    public float getSaldo() {
        return saldo;
    }
    public void setSaldo(float saldo) {
        this.saldo = saldo;
    }
    public float getLimite() {
        return limite;
    }
    public void setLimite(float limite) {
        this.limite = limite;
    }
    public ArrayList<Pessoa> getTitular() {
        return titular;
    }
    public void setTitular(ArrayList<Pessoa> titular) {
        this.titular = titular;
    }
    public StringBuilder getLog() {
        return log;
    }
    public void setLog(StringBuilder log) {
        this.log = log;
    }
    //========Operacoes========
    public boolean deposito(String matricula,float valor){
    float total, atual = this.getSaldo();
    total = atual + valor;
    this.setSaldo(total);
    this.extrato(matricula,this.getTitular().getCpf(),"Depósito", "ok", valor, this.getNumero());
    return true;
    }
    public boolean saque(String matricula,float valor){
    if((this.getSaldo() + this.getLimite())- valor > 0){
        float atual = this.getSaldo();
        this.setSaldo(atual - valor);
        this.extrato(matricula,this.getTitular().getCpf(),"Saque","ok",valor,this.getNumero());
        return true;
    }else{
        this.extrato(matricula,this.getTitular().getCpf(),"Saque","Falha",valor,this.getNumero());
    return false;
    }
    }
    public boolean transfetencia(String matricula,float valor, Conta conta){
    if((this.getSaldo() + this.getLimite())- valor > 0){
        this.setSaldo(this.getSaldo() - valor);
        conta.setSaldo(conta.getSaldo()+valor);
        this.extrato(matricula,this.getTitular().getCpf,"Transferência efetuada","Ok",valor,conta.getNumero());
        conta.extrato(matricula,conta.getTitular().getCpf(),"Transferência recebida","Ok",valor,this.getNumero());
    return true;
    }else{
        this.extrato(matricula,this.getTitular().getCpf(),"Tranferencia","Falha",valor,conta.getNumero());
    return false;
    }
    }
    private boolean extrato(String matricula,String cpf,String operacao, String status, float valor,int numero ){
        log.append("--").append(data.format(d) + " ").append(matricula).append(" ").append(cpf).append(" ").append(operacao + " ").append(status + " ").append(valor + " ").append(numero + "\n");
    return true;
    }
    /*@Override
    public String toString(){
    return "==========\n"+"Agência: " + this.agencia + "\nConta Nº: " + this.numero + "\nSaldo: R$"+this.saldo+"\nLimite: R$"+this.limite+"\nTitular: "+this.titular.getNome()+"\nCPF: "+this.titular.getCpf()+"\n==========";
    }*/
    @Override
    public String toString(){
    return "Agência: " + this.agencia + " Conta Nº: " + this.numero;
            }
}

=======classe Pessoa=======
public class Pessoa {
    //Declarando as variáveis
    protected String nome;
    protected String cpf;
    protected String endereco;
    protected String telefone;
    public  Pessoa(){
    nome = "";
    endereco = "";
    cpf = "";
    telefone = "";
    }
    //Construtores
    public Pessoa(String nome, String telefone, String cpf, String endereco){
        this.nome = nome;
        this.telefone = telefone;
        this.cpf = cpf;
        this.endereco = endereco;
    }
    public Pessoa(String nome){
        this.nome = nome;
        this.telefone = "";
        this.cpf = "";
        this.endereco = "";
    }
    //Getters e setters
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}
===========================

O problema em si está lá pela linha 80

Quando postar código, seleciona ele todo e clica em </>

image

oq tem na linha 80? vc mandou varios códigos aí

Boa noite, o código ele diz que não está achando o símbolo ‘getCpf()’ da localização ArrayList, eu o armazenei na classe pessoa, porém não consigo acessa-lo, deu pra entender?image

Se titular é um ArrayList pode ter vários elementos. Queres o getCpf() de qual? Do primeiro? this.getTitular().get(0).getCpf()
Mas e se não tiver nenhum titular? Se tiver mais do que um?