Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Java estaticamente e fortemente tipado

Nos parâmetros no método transfere eu devo passar o tipo dos parâmetros porque o Java é estaticamente e fortemente tipado, certo? Mas tem alguma diferença entre ser estaticamente e fortemente tipado? ( Já li sobre isto mas não entendi muito bem )

public boolean transfere(double valor, Conta destino){
        if (this.saldo >= valor){
            this.saldo = this.saldo - valor;
            destino.deposita(valor);
            return true;
        }else{
            System.out.println("Sem dinheiro o suficiente para transferir");
            return false; 
        }
    }
4 respostas

Fala Gedielson, pelo que sei dos conceitos de fortemente tipada, há diferença sim, ver o exemplo do JavaScript, que a gente pode criar uma variável e colocar valores diferentes pra ela(int, float, string) sem que der erro, JavaScript é fracamente tipada.

Exemplo JavaScript

Eae Eugênio, Valeu pela explicação mas minha dúvida é em relação a diferença entre estaticamente e fortemente tipado, e também se é por que o Java é estaticamente e fortemente tipado que eu devo passar no parâmetro do método o tipo de dado da variável.

Gedielson,

Uma linguagem de tipo estaticamente possui um sistema de tipos que é verificado no momento da compilação pela implementação (um compilador ou intérprete). A verificação de tipo rejeita alguns programas, e os programas que passam na verificação geralmente vêm com algumas garantias; por exemplo, o compilador garante não usar instruções aritméticas inteiras em números de ponto flutuante.

Não há um acordo real sobre o que significa "fortemente tipado", embora a definição mais amplamente utilizada na literatura profissional seja que, em uma linguagem "fortemente tipada", não seja possível ao programador contornar as restrições impostas pelo sistema de tipos . Esse termo é quase sempre usado para descrever linguagens de tipo estaticamente.

Grato.

solução!

Opa,

Quando se fala estaticamente tipado, significa que uma variável não pode assumir um tipo diferente da sua declaração. Por exemplo, se eu criar um int x, essa variável x sempre será um valor de tipo int, ela é estática. Não pode receber um valor da classe string, por exemplo. Só para comparar, python é dinânimacamente tipada, ou seja, quando criamos uma variável x, ela pode assumir tanto um valor de tipo int quanto de tipo string. Já ser fortemente tipado não está necessariamente ligado com ser estático ou não. Uma linguagem fortemente tipada não permite coerção de tipo, ou seja, uma variável do tipo inteiro não pode se comportar como uma da classe String. Para isso seria necessário um type cast, que é a conversão de um tipo para outro. Um bom exemplo para ver a diferença das duas é justamente o pyhton. Python é uma linguagem dinâmica, mas é fortemente tipada. Isso quer dizer que, apesar da gente criar uma variável com um valor inteiro que eventualmente pode receber uma string, um int não pode ser somado com uma string. Em java, uma variável nasce e morre com seu tipo definido e não permite coerção de tipo.

Espero ter ajudado de alguma forma.