Vi que você se deu ao trabalho de colocar os acentos em “variável”,
pena que é uma má pratica colocar acentos em nomes de coisas no código 
Agora, sobre sua pergunta, você pode mudar o Objeto que uma variável de referência está referenciando contando que ela não tenha sido marcada como final . Não dá pra mudar os métodos de um Objeto em tempo de execução em Java (talvez até de em Javascript, não tenho certeza).
Você pode usar o Padrão de Projetos Strategy se precisar fazer isso.
Para mudar o Objeto (a instância) que uma variável Referencia, você pode fazer algo assim:
Veiculo variavelDeReferencia;
if (...) { variavelDeReferencia = new Carro(); } else { variavelDeReferencia = new Moto(); }
//Isso só compila se as Classes "Carro" e "Moto" extenderem a Classe "Veiculo".
//Também compila se "Veiculo" for uma Interface que "Carro" e "Moto" implementam
O Padrão Strategy não te permite mudar os métodos de um Objeto em Tempo de Execução, mas permite alterar em Tempo de Execução o código que eles executam, mudando o comportamento deles. Exemplo:
public class Carro extends Veiculo {
private Buzina buzina; //Essa é nossa "Estratégia"
public void setBuzina(Buzina novaBuzina) {buzina = novaBuzina;} //permite alterar a "Estratégia" em Tempo de Execução
public void buzinar() {buzina.emitirSom();} //Usamos a "Estratégia" atual
}
public class BuzinaNormal extends Buzina {//1ª Estratégia disponível
public void emitirSom() { System.out.println("Biiii");}
}
public class BuzinaEngracada extends Buzina {//2ª Estratégia disponível
public void emitirSom() { System.out.println("Biiii Biribi bibi");}
}
Usa-se assim:
Carro carro = new Carro();
carro.setBuzina(new BuzinaNormal()); //Definimos a Estratégia em Tempo de Execução
carro.buzinar(); //Usamos a Estratégia Atual, o carro faz "Biiii"
carro.setBuzina(new BuzinaEngracada()); //Redefinimos a Estratégia em Tempo de Execução!
carro.buzinar(); //Usamos a Nova Estratégia, o carro faz "Biiii Biribi bibi"