[pergunta] Onde se faz necessario metodos abstratos  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
jefersonrcosta
What is classpath?
[Avatar]

Membro desde: 08/12/2009 21:44:49
Mensagens: 6
Offline

por favor, alguem poderia me dizer onde se faz necessario metodos abstratos?

Jeferson R. Costa
[Email] [MSN]
mario.fts
GUJ Ranger
[Avatar]

Membro desde: 14/05/2008 09:41:06
Mensagens: 817
Localização: São Paulo - ZL
Offline

Onde vc quiser seguir um contrato, como em uma interface, mas vc quer prover algumas funcionalidades já prontas, deixando só o que é abstrato para ser implementado pela classe filha.

é meio abstrato né?

Mário Amaral Gonçalves

"Ciência da computação tem tanto a ver com o computador como a Astronomia com o telescópio, a Biologia com o microscópio, ou a Química com os tubos de ensaio. A Ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas." - Edsger Dijkstra
[Email]
pvrsouza
Virtual Machine Man
[Avatar]

Membro desde: 04/08/2009 09:50:14
Mensagens: 511
Localização: Salvador-BA
Offline

Ainda sou novato em Java. E eu já me peguntei isso tb. Pelo que eu ja vi uma classe abstrata seria uma especie de super classe. As classe filho herdam seu métodos e atributos. E além disso ela não gera objeto. No caso dos métodos segue o mesmo raciocinio?

This message was edited 1 time. Last update was at 08/02/2010 15:28:58

renanreismartins
GUJ Ranger
[Avatar]

Membro desde: 19/09/2007 15:19:38
Mensagens: 807
Localização: São Paulo - SP
Offline

seguinte vc tem uma classe que nao pode ser instanciada, exemplo veiculo, vc nao ve um "veiculo" acelerando pela rua, pq veiculo é um objeto abstrato, vc ve implementações de veiculo, exemplo motos, carros, caminhoes, patinetes e etc!

todo veiculo tem um comportamento, supomos acelerar, mas cada veiculo acelera do seu modo em particular, entao o metodo acelerar deve ser implementado em cada veiculo, da sua maneira...

um metodo abstrado obrigatoriamente tem que ser implementado em cada classe que extenda a classe abstrata.

abrasssssss

http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software
[WWW] [MSN]
lina
Moderador
[Avatar]

Membro desde: 23/12/2006 21:05:04
Mensagens: 3083
Offline

Oi,

"Imagine um sistema de envio de mensagens do tipo texto e fax. Não faria sentido ter uma instância de Mensagem, mas sim uma de MensagemTexto ou MensagemFax."

Tchauzin!


Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
http://www.guj.com.br/posts/list/50115.java

Se o seu tópico foi respondido e você está satisfeito, segue:
- Pressione o botão <Edit> de seu primeiro post
- Acrescente no final do título a tag [RESOLVIDO]

@gujgirl

http://www.restartfans.hdfree.com.br

Meu blog:

http://www.runthecode.wordpress.com

Tchauzin!
[Email]
ono.leo
Thread.start()

Membro desde: 09/11/2009 15:09:45
Mensagens: 38
Offline

Ola !

Acho que se voce pegar o exemplo da classe Animal, fica bem facil de entender.

Bom, imagine que no seu sistema voce vai utilizar varios animais que emitem algum tipo de som.
Como eu não sei exatamente quais são esses animais, então crio uma classe genérica chamada Animal, conforme exemplo abaixo:


Assim, se surgir um novo animal, voce está mais preparado, bastando cria-lo extendendo a classe Animal.

Bom, mas o que importa mesmo para mim é o animal "emitindo som" (que tenho certeza de que todos os animais que vou utilizar no sistema o fazem), logo adiciono na classe Animal o tal metodo:


Logo, no meu projeto, sei que vou precisar do metodo emitirSom(), mas a gente não sabe a sua implementação, até porque isso depende da proxima classe (concreta) que vai extende-la. Por isso, podemos deixar esse metodo abstrato, consequentemente, a classe toda vira abstract tambem:


Agora, só falta criar os animais concretos, conforme eles forem surgindo em seu projeto:

Exemplos:






Bom, acredito que seja isso.
Se tiver erro, me corrijam ok.

Espero que tenha complementado com algo.


This message was edited 5 times. Last update was at 08/02/2010 17:35:12

discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 547
Localização: Rio de Janeiro
Offline

ono.leo wrote:Ola !

Acho que se voce pegar o exemplo da classe Animal, fica bem facil de entender.

Bom, imagine que no seu sistema voce vai utilizar varios animais que emitem algum tipo de som.
Como eu não sei exatamente quais são esses animais, então crio uma classe genérica chamada Animal, conforme exemplo abaixo:


Assim, se surgir um novo animal, voce está mais preparado, bastando cria-lo extendendo a classe Animal.

Bom, mas o que importa mesmo para mim é o animal "emitindo som" (que tenho certeza de que todos os animais que vou utilizar no sistema o fazem), logo adiciono na classe Animal o tal metodo:


Logo, no meu projeto, sei que vou precisar do metodo emitirSom(), mas a gente não sabe a sua implementação, até porque isso depende da proxima classe (concreta) que vai extende-la. Por isso, podemos deixar esse metodo abstrato, consequentemente, a classe toda vira abstract tambem:


Agora, só falta criar os animais concretos, conforme eles forem surgindo em seu projeto:

Exemplos:






Bom, acredito que seja isso.
Se tiver erro, me corrijam ok.

Espero que tenha complementado com algo.




Boa tarde a todos.

É exatamente isto:

Pegando o embalo, tá na hora então de saber a diferença entre Interface e Classe Abstrata.

Bom uma classe abstrata o nosso amigo Ono.leo já definiu o que é, ou seja, ela possui (não todos) alguns métodos abstratos e por esse motivo essa classe não pode ser instanciada, haja visto que alguns dos seus métodos não foram definidos.

Já uma Interface é nada mais nada menos que uma Classe totalmente Abstrata, ou seja, todos os seus métodos tem que ser abstratos e obedecendo o mesma regra de classe abstrata ela também não é instanciada.

Outra diferença de Interface para Classe Abstrata é que uma Classe Abstrata tem como herdeiro default a classe Object, já uma Interface não herda de ninguém o seja, ela não tem herança definida e por isso que é implementada ao invés de extendida, e também voce pode implementar várias interfaces em uma mesma classe. Já com a herança, voce só pode fazer em uma classe uma única herança.

O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team