Como faço para transferir um valor de uma conta corrente para outra conta poupança dentro de um Switch Case?

import java.util.ArrayList;

import java.util.List;
import java.util.Scanner;

public class Conta{

private int numero;
private int agencia;
private String banco;
protected double saldo;

Scanner sc = new Scanner(System.in);
List<Conta> contas = new ArrayList<Conta>();

public Conta(int numero, int agencia, String banco, double saldo) {
    this.numero = numero;
    this.agencia = agencia;
    this.banco = banco;
    this.saldo = saldo;
}


public Conta(){}


//Menu para o gerente usar
public void menu(){
    System.out.println("\t Escolha uma operação: ");
    System.out.println("1 - Sacar");
    System.out.println("2 - Depositar");
    System.out.println("3 - Transferir");
    System.out.println("4 - Sair e imprimir extrato\n");
    System.out.println("Opção escolhida: ");
}

public void iniciarPrograma(){
    int opcao;

    do{
        menu();
        opcao = sc.nextInt();
        escolheOpcao(opcao);
    }while(opcao != 4);
}

public void escolheOpcao(int opcao){
    double valor;

    switch (opcao){

        case 1:{
            System.out.println("Quanto deseja sacar?");
            valor = sc.nextDouble();
            sacar(valor);
            break;
        }

        case 2:{
            System.out.println("Quanto deseja depositar?");
            valor = sc.nextDouble();
            depositar(valor);
            break;
        }

        case 3:{
            System.out.println("Saldo disponível R$"+getSaldo());
            System.out.println("Digite o valor para realizar a transferência: ");
            valor = sc.nextDouble();


            break;

        }
        case 4:{
            System.out.println("Sistema encerrado!");
            break;
        }

    }
}


public int getNumero() {
    return numero;
}

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

public int getAgencia() {
    return agencia;
}

public void setAgencia(int agencia) {
    this.agencia = agencia;
}

public String getBanco() {
    return banco;
}

public void setBanco(String banco) {
    this.banco = banco;
}


public  double getSaldo(){
    return saldo;
}

public void setSaldo(double saldo) {
    this.saldo = saldo;
}

public void somaSaldo(ContaCorrente c1, ContaPoupanca c2, ContaSalario c3){
    double soma = 0.0;
    soma = c1.getSaldo()  + c2.getSaldo() + c3.getSaldo();
    System.out.println("Saldo total das contas: R$"+soma);
}

public boolean sacar(double quantia){
    if(saldo > quantia){
        saldo -= quantia;
        return true;
    }else{
        System.out.println("Saldo insuficiente!!");
        return false;
    }
}



public  void depositar(double quantia){
    this.saldo += quantia;
    System.out.println("Depositado: R$"+quantia);
    System.out.println("Saldo atual: R$"+saldo);
}

//Método transferir de uma conta para outra
public void transferir(Conta contaDestino, double valor){

    if(saldo > valor){
        this.saldo -= valor;
        contaDestino.saldo += valor;
        System.out.println("Transferência realizada com sucesso!!!");
    }else{
        System.out.println("Saldo insuficiente para transferência!!");
    }


}

}