Dá pra fazer, porém é menos expressivo. em outras palavras, para quem lê o código fica mais difícil de compreender o que você está fazendo.
Um dos grandes ganhos da programação orientada a objetos deve ser a manutenibilidade (facilidade de dar manutenção no código), pra isso ele deve ser mais legível e fácil de entender.
Mas, respondendo a sua pergunta, você poderia fazer como abaixo, mas observe que a legibilidade fica pior:
public class TesteGeteSet {
public static void main(String[] args) {
Conta contaPaulo = new Conta(500, 600);
contaPaulo.setTitular(new Cliente());
contaPaulo.getTitular().setNome("Paulo Cardoso");
System.out.println(contaPaulo.getTitular().getNome());
}
}
Uma versão mais fácil ainda de entender seria:
public class TesteGeteSet {
public static void main(String[] args) {
Conta contaPaulo = new Conta(500, 600);
Cliente paulo = new Cliente("Paulo Cardoso"); // Faz sentido o cliente receber um nome ao ser criado. Para isso você deve ter um construtor que recebe um parâmetro.
contaPaulo.setTitular(paulo);
// linha removida: contaPaulo.getTitular().setNome("Paulo Cardoso");
System.out.println(contaPaulo.getTitular().getNome());
}
}