Galera, vcs saberiam me dizer se Java é uma linguagem orientada a objeto baseada em protótipo?
Segue uma fonte onde tem informações sobre linguagem OO baseada em protótipo:
http://www.milfont.org/tech/2008/01/05/heranca-no-javascript/
Galera, vcs saberiam me dizer se Java é uma linguagem orientada a objeto baseada em protótipo?
Segue uma fonte onde tem informações sobre linguagem OO baseada em protótipo:
http://www.milfont.org/tech/2008/01/05/heranca-no-javascript/
Não sei se voce sabe, mas Java e javascrip são coisas diferentes…
Sim eu sei. Por isso mesmo a pergunta.
Obrigada.
Galera, vcs saberiam me dizer se Java é uma linguagem orientada a objeto baseada em protótipo?Segue uma fonte onde tem informações sobre linguagem OO baseada em protótipo:
http://www.milfont.org/tech/2008/01/05/heranca-no-javascript/
Não. Java é baseado em classes ( que são metadados que são usados para criar os objetos).
Javascript é baseado em prototipos ( que são dados que são usados para “clonar” novos objetos)
Embora o nome a sintaxe semelhante, java não tem nada que ver com javascript.
Gente, eu não estou falando que as duas são iguais. É que em Java pode-se herdar as características de uma classe e em JavaScript pode-se herdar as características de um objeto, portanto eu pensei: se em Java eu crio uma classe e instancio um objeto, será que também posso instanciar um objeto de um objeto e assim os objetos filhos poderiam herdar as características do pai e ainda poderiam também alterar os métodos do pai, sem alterar a classe em que foi instanciado o pai?
Entenderam?
Gente, eu não estou falando que as duas são iguais. É que em Java pode-se herdar as características de uma classe e em JavaScript pode-se herdar as características de um objeto, portanto eu pensei: se em Java eu crio uma classe e instancio um objeto, será que também posso instanciar um objeto de um objeto e assim os objetos filhos poderiam herdar as características do pai e ainda poderiam também alterar os métodos do pai, sem alterar a classe em que foi instanciado o pai?Entenderam?
A resposta é não; e pior, isso é “chumbado” na JVM (ou seja, para implementar um comportamento semelhante ao do JavaScript em uma linguagem que rode sob a JVM, é necessário fazer um monte de mágica em vez de usar as capacidades padrão da máquina virtual Java. ) Linguagens que têm esse recurso e que devam ser compiladas para bytecodes normalmente têm implementações bem complexas desse recurso. A partir do Java 7 existe um novo opcode (invokedynamic) na JVM mas não sei se ele é útil para implementar esse recurso de forma menos “deselegante”.
Gente, eu não estou falando que as duas são iguais. É que em Java pode-se herdar as características de uma classe e em JavaScript pode-se herdar as características de um objeto, portanto eu pensei: se em Java eu crio uma classe e instancio um objeto, será que também posso instanciar um objeto de um objeto e assim os objetos filhos poderiam herdar as características do pai e ainda poderiam também alterar os métodos do pai, sem alterar a classe em que foi instanciado o pai?Entenderam?
O que vc quer saber é : è Possivel implementar o padrão Prototy com java ?
Sim. Mas em partes. ( vou discordar ligeiramente do entanglement 
Com java vc precisa criar uma classe e depois instanciar o objeto. Feito isso vc pode criar outros objetos “clonando” o objeto original. Só que vc não pode adicionar propriedades ou métodos nesse objeto. Portanto, vc pode herdar, mas não pode extender.
Se não pode estender , não é útil.
Agora, entenda que vc pode usar mais do que uma classe e objeto para simular o mesmo comportamento. Para isso vc precisa cria classes que representam metodos e atributos e classes e a estrutrua em si, para que depois vc possa implementar o padrão Prototype em cima disso. é prático ? não. É possível ? sim. ( é o que as linguagens que correm na jvm e são dinâmicas, fazem : groovy, jruby, etc… mas com uma ajudinha leve de byte-code re-write).
Contudo, a clonagem de objetos apenas para ter cópias da mesma estrutura é mais comum do que parece. Por isso que existe a interface Clonable e o método protegido clone() em Object. Mas não confundir Conable com Prototype. Prototype permite vc alterar a estrutrua ( adicinar métodos e propriedades) , Clonable simplesmente faz cópias de objetos.
Muito obrigada pelas repostas.
Foram muito esclarecedoras.
Entendi o/